Files
effekt-interface-frontend/src/utils/request.js

65 lines
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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