前端

工程创建

vue create project

安装插件

npm i element-ui -S npm i axios -S

编辑main.js, 引入element-ui, axios; 配置axios,

import axios from 'axios' import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); Vue.config.productionTip = false axios.defaults.baseURL = "http://localhost:8080/" axios.defaults.withCredentials=true; Vue.prototype.axios = axios;

启动服务

npm run serve -- --port=8081

代码收集

所有请求都带指定的header

使用请求拦截器来实现:

// 请求拦截器 instance.interceptors.request.use(function (config){ config.headers.token = "这里放入需要的token"; //在headers中携带token return config },function (error){ // 处理请求错误 return Promise.reject(error) }); Vue.prototype.axios = instance;

统一处理axios返回内容

//响应拦截器 axios.interceptors.response.use(function (resp){ return resp; },function (err){ console.log(err.request.status); if("401" == err.request.status) { router.push("/login") } })

传递参数

以列表页打开详情页为例,打开详情页时需要传递当前列表的id到详情页。做法如下:

// 打开/contract页面,同时传递参数ID openContract(contract) { this.$router.push({path:"/contract", query:{id:contract.id}}) }

获取传递的参数

mounted() { console.log("合同ID="+this.$route.query.id); }

前端安装唯一ID工具

npm install nanoid