request.js
1.95 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
import axios from 'axios'
import { Message } from 'element-ui'
import Cookie from '@/utils/Cookie'
import md5 from 'blueimp-md5'
import { param2 } from '@/utils'
const Service = axios.create({
baseURL: window._vionConfig.apiUrl,
timeout: 0,
withCredentials: true
})
// create signature
function generateSignature({ method, params, data }) {
const suffix = '4c413628731691abc99eb2fca5f69aab'
const signalStr =
method.toUpperCase() +
(params ? param2(params) : '') +
(data ? JSON.stringify(data) : '') +
suffix
return md5(signalStr)
}
Service.interceptors.request.use(
config => {
let language = localStorage.getItem('lang'),
aToken = Cookie.get('atoken')
config.headers['signature'] = generateSignature(config)
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)
},
error => {
Message({
type: 'error',
message: error
})
return Promise.reject(error)
}
)
Service.interceptors.response.use(
response => {
if (response.data && !response.data.success) {
if (response.data.ecode && response.data.ecode !== 200) {
// 跳转首页
Message({
showClose: true,
message: response.data.enote,
type: 'error'
})
return
} else {
// 非标准返回体
if (response.status === 200) {
return response
}
}
if (response.data.code === 500) {
Message({
showClose: true,
message: response.data.msg,
type: 'error'
})
}
return Promise.reject(response.data.msg)
}
return response
},
error => {
return Promise.reject(error)
}
)
export default Service