import axios from 'axios'
import { message, Modal } from 'antd'
let reqNum = 0;
// 创建一个axios连接
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API, // 请求服务器的地址
// withCredentials: true, // 允许跨域时发送cookie
timeout: 5000 // 请求超时
})
// 请求拦截器
service.interceptors.request.use(
config => {
// 发送请求前进行相关设置
if (localStorage.token) {
config.headers['Authorization'] = localStorage.token // 让每个请求携带自定义token 请根据实际情况自行修改
}
reqNum++;
return config
},
error => {
// 请求出错时
console.log(error) // for debug
return Promise.reject(error)
}
)
// 响应拦截器
service.interceptors.response.use(
/*
* 如果想获取http的headers信息和status状态,请return response => response
* 通过自定义code获取状态status
*/
response => {
const code = response.status
if (code < 200 || code > 300) {
message.error(res.msg, 2);
return Promise.reject(new Error(res.msg || 'Error'))
} else {
return response.data
}
},
error => {
reqNum--;
if(reqNum===0){
Modal.destroyAll();
}
let status = JSON.parse(JSON.stringify(error.response)).status;
if (status === 401) {
Modal.error({
title: '提示',
content: '您还未登录,请您登录后体验更多功能',
okText: '重新登录',
onOk: () => {
window.location.href='http://www.demo.cn/login';
}
});
} else {
message.error(error.msg, 2);
}
console.log('err' + error);// for debug
return Promise.reject(error)
}
)
export default service;
axios请求拦截封装(antd)
最新推荐文章于 2024-03-01 18:09:11 发布