import router from "@/router/index";
import {
getToken
} from "@/utils/token";
import axios from "axios";
import {
Message
} from 'element-ui';
import qs from "qs";
import Store from '@/store';
import config from '@/util/config';
const api = "/test"
const service = axios.create({
baseURL: config.domain,
timeout: config.timeout
crossDomain: true,
});
service.interceptors.request.use(
(config) => {
const Token = getToken();
if (Token) {
config.headers["Authorization"] = `${Token}`;
}
if (
(config.method === "post" ||
config.method === "POST" ||
config.method === "put") &&
config.type !== "json" && config.url.indexOf(api) === -1
) {
config.data = qs.stringify(config.data);
}
return config;
},
(error) => {
errorMsg(error.response)
return Promise.reject(error);
}
);
service.interceptors.response.use(
(response) => {
const {
data,
config
} = response;
if (data || data.code === 200 || config.responseType === 'blob') {
return data;
} else {
errorMsg(response)
return Promise.reject(response);
}
},
(error) => {
errorMsg(error.response)
return Promise.reject(error.response.data); // 可在组件内获取到服务器返回信息
}
);
//失败函数
const errorMsg = (err) => {
/**
* @err {
* data:{code:...,msg:...},
* status:...,
* config:{...}
* }
*/
let errMsg = '',
realCode = 0
//判断报错的code 优先判断数据code
if (err.data && err.data.code) {
const {
code,
msg
} = err.data
realCode = code
errMsg = msg || '接口未知错误,请联系管理员'
} else if (err.status) {
switch (Number(err.status)) {
case 401:
errMsg = '错误401-接口无权限'
break
case 404:
errMsg = '错误404-接口路径错误'
break
case 500:
errMsg = '错误500-服务器内部错误'
break
case 502:
errMsg = '错误502-网关错误'
break
case 503:
errMsg = '错误503-系统服务升级中'
break
case 504:
errMsg = '错误504-响应超时,请稍后重试'
break
default:
errMsg = `错误${Number(err.status)}-未知错误`
break
}
}
Message.error({
message: errMsg,
duration: 3000,
})
if (Number(realCode) === 401 || Number(realCode) === 403) {
Store.dispatch('user/logOut', 1) /
if (router) {
router.push('/login')
}
}
}
export default service;