前端

工程创建

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