You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
duoji-frontend/src/plugins/axios/axios.js

41 lines
1.1 KiB
JavaScript

6 years ago
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]);
}
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);
return Promise.reject(res.message);
}
return res;
}, (err) => Promise.reject(err));
export default instance;