65 lines
2.2 KiB
JavaScript
65 lines
2.2 KiB
JavaScript
import axios from 'axios'
|
||
import { Message } from 'element-ui';
|
||
import router from '../router/index'
|
||
const service = axios.create({
|
||
// baseURL: 'http://10.250.0.252:5010', // api 的 base_url
|
||
// baseURL: '', // api 的 base_url
|
||
baseURL: '/it/api', // api 的 base_url
|
||
|
||
timeout: 90000 // request timeout
|
||
})
|
||
|
||
// 请求拦截 设置统一header
|
||
service.interceptors.request.use(
|
||
config => {
|
||
const accessToken = localStorage.getItem('accessToken')
|
||
if (accessToken) {
|
||
config.headers.accessToken = accessToken
|
||
}
|
||
return config
|
||
},
|
||
error => {
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
|
||
// 响应拦截 401 token过期处理
|
||
service.interceptors.response.use(
|
||
response => {
|
||
const data = response && response.data ? response.data : {}
|
||
// 兼容后端返回结构:{ success, code, message, data }
|
||
if (data && data.code === 500) {
|
||
Message.error('服务异常')
|
||
return Promise.reject(new Error(data.message || '服务异常'))
|
||
} else if (data && data.code === 451) {
|
||
router.push({ name: 'login' })
|
||
Message.error(data.message || '登录已失效,请重新登录')
|
||
return Promise.reject(new Error(data.message || '登录已失效'))
|
||
} else if (data && data.success === false) {
|
||
Message.error(data.message || '请求失败')
|
||
return Promise.reject(new Error(data.message || '请求失败'))
|
||
} else if (data && data.code !== undefined && data.code !== 20000) {
|
||
Message.error(data.message || '请求失败')
|
||
return Promise.reject(new Error(data.message || '请求失败'))
|
||
} else {
|
||
return response.data
|
||
}
|
||
},
|
||
error => {
|
||
// 非 2xx 时会进入这里(如 40009/40012),后端通常会带 JSON body
|
||
const data = error && error.response && error.response.data ? error.response.data : null
|
||
if (data && typeof data === 'object') {
|
||
if (data.success === false) {
|
||
Message.error(data.message || '请求失败')
|
||
} else if (data.code && data.code !== 20000 && data.message) {
|
||
Message.error(data.message || '请求失败')
|
||
}
|
||
} else if (error && error.message) {
|
||
Message.error(error.message)
|
||
}
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
|
||
export default service
|