test_push/amms_front/src/utils/request.js

76 lines
2.1 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 { tansParams } from './common'
import router from '@/router'
import { ElMessage } from 'element-plus'
import { getToken, removeToken} from './token'
// 创建axios实例
const service = axios.create({
// axios中请求配置有baseURL选项表示请求URL公共部分
baseURL: "/api",
// 超时
timeout: 60000
})
service.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 请求拦截器
service.interceptors.request.use(
config => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
// 每次发送请求之前判断是否存在token
// 如果存在则统一在http请求的header都加上token这样后台根据token判断你的登录状态进而判断是否有权限访问
if (getToken() && !isToken) {
config.headers['Authorization'] = getToken()
}
// get请求映射params参数
if (config.method === 'get' && config.params) {
let url = config.url + '?' + tansParams(config.params);
url = url.slice(0, -1);
config.params = {};
config.url = url;
}
// post和put请求
if (config.method === 'post' || config.method === 'put') {
config.data = JSON.stringify(config.data)
}
return config
}
)
// 响应拦截器
service.interceptors.response.use(
response => {
const res = response.data
console.log(res);
if (res.code !== 200) {
if (res.code === 401) {
ElMessage.error("登录失效,请重新登录!")
removeToken(); // 删除本地token
router.push("/login")
return Promise.reject(new Error(res.message || 'Error'))
} else if (res.code === 403) {
ElMessage.error('无权访问!')
return Promise.reject(new Error(res.message || 'Error'))
}
}
return res
},
error => {
console.log('err' + error) // for debug
if (error.status == 403) {
ElMessage.error('无权访问!')
} else {
ElMessage.error('服务异常!')
}
return Promise.reject(error)
}
)
export default service