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.
41 lines
1.1 KiB
JavaScript
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;
|