import Vue from 'vue'; import axios from 'axios'; const instance = axios.create({ baseURL: process.env.VUE_APP_API_URL, timeout: 60 * 1000, headers: { 'Content-Type': 'application/json;charset=UTF-8', }, withCredentials: true, }); instance.interceptors.request.use((config) => { const reqObj = config; // 在发送请求之前做些什么 -- 路径参数拼接 const reg = /\{(.+?)\}/g; if (reg.test(reqObj.url)) { reqObj.url = reqObj.url.replace(reg, Object.values(reqObj.path)[0]); } // token if (sessionStorage.getItem('token')) { reqObj.headers.token = sessionStorage.getItem('token'); } return reqObj; }, (err) => Promise.reject(err)); instance.interceptors.response.use((response) => { if (!sessionStorage.getItem('token')) { sessionStorage.setItem('token', response.headers.token) } const res = response.data; // 对响应数据做点什么 if (res.code !== 200) { console.log(res); Vue.prototype.$message.error(res.message); // 未认证 if (res.code === 401) { sessionStorage.clear() this.$router.push({ name: 'login' }) } return Promise.reject(res.message); } return res; }, (err) => Promise.reject(err)); export default instance;