SSMP整合案例(10) vue端调整项目环境 发送请求 基本界面编写

好 之前我们已经将后端服务整个写好了
然后 我们就继续回来写我们前端的项目 之前文章SSMP整合案例(1) 构建 Spring Boot Vue MySql项目环境中我们顺手搭建了前端的项目环境
我们打开它 在终端输入

npm i axios@0.21.0

引入 axios 它是一个专门用来发请求的第三方插件
在这里插入图片描述
一定要注意 @ 后的版本 这个还挺重要的

然后我们引入一下 Sass

在终端执行

npm install sass-loader node-sass@4.14.1 --save-dev

在这里插入图片描述
然后我们 Sass 就进来了

然后 我们在项目src目录下创建一个 文件夹 叫 utils
在这个文件夹下创建一个 request.js
request.js 参考代码如下

import axios from 'axios';//在vue原型链中封装post请求方法
function createService () {// 创建一个 axios 实例const service = axios.create()// 请求拦截service.interceptors.request.use(//发送成功config => {//可在此配置请求头信息config.headers.Authorization = `Bearer`;return config},//发送失败error => {return error})//响应拦截service.interceptors.response.use(//请求成功response => {//抛出返回值return response&&response.data?response.data:{state: 500,message: "系统异常"};},//请求失败(error) => {//返回错误信息return error;})//抛出对象return service
}function createRequestFunction (service) {return function (config) {const configDefault = {headers: {'Content-Type':'application/json'},timeout: 100000,baseURL: "",data: {}}return service(Object.assign(configDefault, config))}
}const service = createService()
export const request = createRequestFunction(service);

我们做了一个 axios的二次封装
然后在src目录下创建一个 api文件夹 下面创建一个 bookApi.js
参考代码如下

import {request} from '@/utils/request'export function get(params){return request({url:`/books`,method:'get',params:params,})
}

这里 我们定义了请求 http://localhost/books的函数 请求方式为get
但是 直接这样请求 肯定是跨域的

我们找到项目根目录下的 vue.config.js
在其中加上

devServer: {proxy: {"/books": {target: 'http://localhost/',ws: true,changeOrigin: true,pathRewrite: {['^' + process.env.VUE_APP_BASE_API]: ''}},}
}

在这里插入图片描述
意思是 当匹配到books时 我们直接 代理到http://localhost/地址
就好比
/books 代理处理之后 就是 http://localhost/books

我们编写 src下的 App.vue组件代码如下

<template><div class="app"></div>
</template><script>
import { getAll } from "@/api/bookApi.js"
export default {name: 'App',data() {return {}},mounted() {getAll({}).then(res => {console.log(res);})}
}
</script>

我们在mounted生命周期中调用了getAll 发送请求 并 接受返回结果
我们运行项目 可以看到 数据就正确的出现了
在这里插入图片描述

那么 我直接编写App组件代码如下

<template><div class="app"><h1 class = "title">图书管理</h1><el-form:inline="true":model="formData"class="demo-form-inline"size="small"><el-form-item><el-input v-model="formData.type" placeholder="圈书类别"></el-input></el-form-item><el-form-item><el-input v-model="formData.name" placeholder="图书名称"></el-input></el-form-item><el-form-item><el-input v-model="formData.description" placeholder="图书描述"></el-input></el-form-item><el-form-item><el-button @click="queryGet">查询</el-button><el-button type="primary" @click="AddBook">新建</el-button></el-form-item></el-form><el-table:data="bookList"style="width: 100%"height="calc(100vh - 200px)"><el-table-columnprop="name"label="图书名称"></el-table-column><el-table-columnlabel="类别"width="180"><template slot-scope="scope">{{ typeIn[scope.row.type] }}</template></el-table-column><el-table-columnprop="description"label="描述"></el-table-column></el-table><div class = "pages"><el-paginationbackground:page-size="page.pageSize":page-count="page.pageCount"layout="prev, pager, next":total="total"></el-pagination></div></div>
</template><script>
import { getAll } from "@/api/bookApi.js"
export default {name: 'App',data() {return {total: 0,page: {pageSize: 10,pageCount: 1},formData: {type: "",name: "",description: "",},bookList: [],typeIn: {0: "知识科普",1: "休闲图书",2: "官方记录",3: "典藏"}}},methods: {queryGet() {},AddBook() {},getAll() {getAll({}).then(res => {if(res.state == 200) {this.bookList = res.data;}else{this.$message.error(res.message);}})}},mounted() {this.getAll();}
}
</script><style>
*{margin: 0;padding: 0;box-sizing: border-box;
}
</style><style lang="scss" scoped>
.app{width: 100vw;height: 100vh;padding: 0 15px;.title{padding: 12px 0;border-bottom: 3px solid rgb(88,132,159);margin-bottom: 12px;}.pages{display: flex;justify-content:flex-end;}
}
</style>

我们的界面 差不多就出来一个雏形了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/3993.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android启动优化实践

作者&#xff1a;95分技术 启动优化是Android优化老生常谈的问题了。众所周知&#xff0c;android的启动是指用户从点击 icon 到看到首帧可交互的流程。 而启动流程 粗略的可以分为以下几个阶段 fork创建出一个新的进程创建初始化Application类、创建四大组件等 走Applicatio…

libevent实践06:监听TCP服务器

简介 函数evconnlistener_new_bind struct evconnlistener * evconnlistener_new_bind(struct event_base *base, evconnlistener_cb cb,void *ptr, unsigned flags, int backlog, const struct sockaddr *sa,int socklen) 参数解析&#xff1a; base&#xff1a;事件集合 ev…

Llama大模型运行的消费级硬件要求【CPU|GPU|RAM|SSD】

大型语言模型 (LLM) 是强大的工具&#xff0c;可以为各种任务和领域生成自然语言文本。 最先进的LLM之一是 LLaMA&#xff08;大型语言模型 Meta AI&#xff09;&#xff0c;这是由 Facebook 的研究部门 Meta AI 开发的一个包含 650 亿个参数的模型 要在家运行 LLaMA 模型&…

MySQL数据库优化技术一

纵论 对mysql优化时一个综合性的技术&#xff0c;主要包括 表的设计合理化(符合3NF)添加适当索引(index) [ 四种: 普通索引、主键索引、唯一索引unique、全文索引 ]分表技术( 水平分割、垂直分割 ) 水平分割根据一个标准重复定义几个字段值相同&#xff0c;表名称不同的表&…

CSDN-AI小组2023-半年-研发总结

目录 1.丐版「大模型」&#xff0c;Proof of concept2. LLM和AIGC的各种综述3. 基于Embedding的应用&#xff0c;问答&#xff0c;AI编程4. 评论区的AI助手5. 结合AIGC的各种数据自动计算6. 个性化推荐的系统重构7. 基于AIGC的个性化博客创作鼓励8. 博客质量分V5: 可解释性计算…

Windows 下后台启动 jar 包,UTF-8 启动 jar 包

目录 1. Windows 下启动 jar 包2. 设置 cmd 编码3. UTF-8 编码启动 jar 包 1. Windows 下启动 jar 包 小贴士&#xff1a;打包的时候把 application.yml 所有内容都注释掉&#xff0c;然后打包&#xff0c;再把 application.yml 与打好的 jar 包放在同级目录下&#xff0c;如图…

Redis概述及安装、使用和管理

文章目录 一、NoSQL非关系型数据库1.NoSQL概述2.关系型数据库和非关系型数据库区别&#xff08;1&#xff09;数据存储方式不同&#xff08;2&#xff09;扩展方式不同&#xff08;3&#xff09;对事务性的支持不同 3.非关系型数据库使用场景 二、Redis概述1.简介2.优点3.Redis…

go读写文件总结

别人的经验&#xff1a; 如今任何计算机系统每天都会产生大量的日志或数据。随着系统的增长&#xff0c;将调试数据存储到数据库中是不可行的&#xff0c;因为它们是不可变的&#xff0c;主要用于分析和解决故障的目的。因此&#xff0c;企业倾向于将其存储在文件中&#xff0…

使用conda虚拟环境,Jupyter Notebook 链接不上 kernel

1&#xff0c;检查 ipykernel 和 ipython 是否一致 输入pip list 或者conda list检查一下相应库的版本是不一致 不一致的话&#xff0c;可以更新这两个库的版本&#xff1a;pip install --upgrade 库名 2&#xff0c;看控制台的报错&#xff0c;如果是报404&#xff0c;内核找不…

【Linux】软硬链接与动静态库

系列文章 收录于【Linux】文件系统 专栏 关于文件描述符与文件重定向的相关内容可以移步 文件描述符与重定向操作。 可以到 浅谈文件原理与操作 了解文件操作的系统接口。 想进一步理解文件系统还可以看看文件缓冲区和文件系统。 目录 系列文章 软硬链接 软链接 硬链接…

vue(脚手架创建)代理解决跨域问题

目录 为什么会出现跨域问题 什么是跨域 Vue CLI Vue2解决跨域问题 不重写路径 重写路径 vue.config.js代码 Vue3解决跨域问题 ViteVue解决跨域问题 vite.config.ts代码 总结 为什么会出现跨域问题 出于浏览器的同源策略的限制。同源策略是一种约定&#xff0c;它是…

Linux网络环境配置

第一种方式&#xff08;自动获取&#xff09;&#xff1a; 说明&#xff1a;登陆后&#xff0c;通过界面的来设置自动获取IP 特点&#xff1a;Linux启动后会自动获取IP 缺点&#xff1a;是每次自动获取的IP地址可能不一样 第二种方法&#xff08;指定IP)&#xff1a; 1、说明…