axios.js
1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import axios from 'axios';
import router from '../router';
import _ from 'lodash'
import qs from 'Qs'
// 请求拦截器
axios.interceptors.request.use(
config => {
// 发送请求前
if (config.method === 'post' &&
(config.url.indexOf('a=upload') === -1 && config.url.indexOf('upload.qiniup.com') === -1)) // 上传相关接口需要屏蔽掉
{
// POST PHP需要修改数据格式
config.data = qs.stringify(config.data)
}
// 绑定默认请求头
config.params = _.merge(config.params, {
f: 'voice',
})
return config;
},
error => {
// 请求错误处理
return Promise.reject(error);
});
// 响应拦截器
axios.interceptors.response.use(
response => {
let userType = router && router.currentRoute.value.href?.indexOf('business') > 0 ? 'b' : 'c';
if (response.data.code === 401) {
// 特殊标识-带此标识报错不显示
response.data.show = false;
// 未授权跳转登录页
// 带着上一个页面的信息
router.replace({
path: '/auth',
query: {
href: router.currentRoute.value.href,
userType
}
});
}
// 默认显示
response.data.show = true;
// 拦截B端未登录情况
if (response.data.msg === '老师请先登录!' || response.data.msg === '老师不存在!') {
router.replace({
path: '/business/login'
});
}
return response;
},
error => {
return Promise.reject(error.response.data);
});
export default axios;