1、安装axios
npm install axios --save
2、建立axiosHttp.js文件
import axios from "axios";
import router from '../router';
import { message } from "ant-design-vue";
import config from "./search/config";
import { getToken, removeToken } from '@/utils/auth';
const service = axios.create({
baseURL: 'http://localhost:8090',
timeout: 20000000,
headers: {
'Content-Type': "application/json;charset=UTF-8"
}
});
let configRequest = config
service.interceptors.request.use(
(config) => {
const token = getToken(),
meta = router.currentRoute.meta;
token && (config.headers.serverToken = token);
meta && meta.funcId && (config.headers.funcId = meta.funcId);
config.ticket && (config.headers.ticket = config.ticket)
configRequest = config
return config;
},
(error) => {
return Promise.reject(error);
}
);
service.interceptors.response.use(
(response) => {
const res = response.data;
const {code, data} =res;
if (code) {
if(code == 10000){
return data;
} else if(code == 3000) { //没有权限
router.replace({
path: '/403'
})
} else if(code == 6000) { //重定向
message.error("请先登录");
removeToken();
router.replace({
path: '/login'
})
} else if(code == 4000) { //登陆超时
message.error("登陆超时");
removeToken();
router.replace({
path: '/login'
})
} else {
message.error(res.message || "Error", 5);
return Promise.reject();
}
} else if(res.successful == false){
message.error(res.resultHint || "Error", 5);
return Promise.reject(new Error(res.resultHint || "Error"));
} else {
if (configRequest.responseType == 'blob') {
//文件导出
if(res.type=='application/json'){
let reader = new FileReader();
reader.onload = function (e) {
let readerres = reader.result;
let parseObj = JSON.parse(readerres);
console.log(parseObj)
if(parseObj.code === 4000){
message.error("登陆超时");
removeToken();
router.replace({
path: '/login'
})
} else {
message.error('导出失败!', 5)
}
}
reader.readAsText(response.data, 'utf-8');
} else {
const objectUrl = window.URL.createObjectURL(new Blob([res]));
const filename = response.config.filename; //文件名必须包含扩展名
const link = document.createElement('a');
link.style.display = 'none';
link.href = objectUrl;
link.setAttribute('download', filename);
document.body.appendChild(link);
link.click()
document.body.removeChild(link);
window.URL.revokeObjectURL(objectUrl);
}
} else {
return response
}
}
},
(error) => {
message.error(error.message || "Error", 5);
return Promise.reject(error);
}
);
export default service;