request.js
3 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import axios from 'axios'
import qs from 'qs'
import * as Cookies from 'js-cookie'
import router from '@/router'
import {
loading,
Message
} from 'element-ui'
// 创建 axios 的一个实例
const service = axios.create({
baseURL: window._vionConfig.apiUrl, // 因为我本地做了反向代理
timeout: 0,
// responseType: "json",
// changeOrigin: true,//允许跨域
withCredentials: true, // 是否允许带cookie这些
headers: {
"Content-Type": "application/json;charset=UTF-8"
// 'Content-Type': 'application/x-www-form-urlencoded'
}
})
window.axios = service;
var loadingStatus;
let store = {
source: {
token: null,
cancel: null
}
}
// 请求拦截器
service.interceptors.request.use(
config => {
let language = localStorage.getItem('lang')
, aToken = Cookies.get('atoken');
if(language) {
let languageObj = {
'mall_CN': 'zh-CN,zh;q=0.9',
'zh_CN': 'zh-CN,zh;q=0.9',
'en_US': 'en-US,en;q=0.5',
'zh_TW': 'zh-TW,zh;q=0.3'
}
languageObj[language] && (config.headers['Accept-Language'] = languageObj[language]);
}
aToken && (config.headers.Authorization = aToken);
config.cancelToken = store.source.token
return config;
}, error => {
Message({
showClose: true,
message: error,
type: 'error.data.error.message'
})
return Promise.reject(error.data.msg)
}
)
// 跳转路由打断请求
router.beforeEach((to, from, next) => {
let CancelToken = axios.CancelTokenm
store.source.cancel && store.source.cancel()
store.source = CancelToken.source()
next()
})
// 响应拦截器
service.interceptors.response.use(
res => {
if(res.data && !res.data.success) {
if(res.data.ecode && res.data.ecode != 200) {
let cookieInfo = Cookies.get()
for(let k in cookieInfo) {
Cookies.remove(k)
}
router.push({
path: '/'
})
Message({
showClose: true,
message: res.data.enote,
type: 'error'
})
return
} else {
// 非标准返回体
if(res.status == 200) {
return res;
}
}
if(res.data.code == 500) {
Message({
showClose: true,
message: res.data.msg,
type: 'error'
})
}
return Promise.reject(res.data.msg);
} else if(!res.data && res.status == 200) {
return res;
} else if(res.data.success && res.config.method != 'get') {
//
}
return res;
}
// , error => {
// return Promise.reject(error)
// }
)
export default service;