import axios from "axios";
import store from "@/store";
import router from "../router";
// import config from "@/config"; //基础配置,这里我就不展示就是拼接两个对象,你也可以注释掉
import { Message } from "element-ui";
// 获取登陆后存在cookie中的token
function getToken(){
return Cookies.get(TOKEN_KEY);
};
const service = axios.create({
baseUrl:
process.env.NODE_ENV === "development"
? config.baseUrl.dev
: config.baseUrl.pro,
timeout: 5 * 1000
});
// 关闭全局的loading,存在store里面的一个loaing,大家可以不用(访问一次接口就loading一下那种下过而已)
// function closeGlobalLoading() {
// if (store.state.app.globalLoading) {
// store.commit("SET_GLOBAL_LOADING", false);
// }
// }
// 弹出错误提示
function showErrMsg(errorMsg) {
Message({
type: "error",
showClose: true,
message: errorMsg,
duration: 5 * 1000
});
}
// request拦截器
service.interceptors.request.use(
config => {
let token = getToken();
if (token) {
config.headers["Authorization"] = token;
}
return config;
},
error => {
Promise.reject(error);
}
);
const whiteList = [200]; // code白名单 非200即当作异常处理
// const ridrectCode = [2134001, 2134002, 2134012]; // token失效的情况需重定向
// respone拦截器
service.interceptors.response.use(
response => {
// setTimeout(() => {
// closeGlobalLoading(); // 关闭全局loading
// }, 100);
const { data } = response;
if (whiteList.includes(data.code)) {
return data;
} else {
// if (ridrectCode.includes(data.code)) {
// // token失效时,清除当前用户登录信息并重定向到登录页
// store.dispatch("user/clearLoginInfo").then(() => {
// router.push(`/login?redirect=${router.history.current.path}`);
// });
// }
showErrMsg(`[ ${data.code} ] ${data.message}`);
return Promise.reject(data.message);
}
},
error => {
// closeGlobalLoading();
let errorMsg = error.message;
if (error.response) {
// 请求已发出,但服务器响应的状态码不在 2xx 范围内
console.log(error.response.data);
showErrMsg("服务器异常,请联系管理员!");
} else {
// 服务器没有响应
console.log("server", errorMsg);
showErrMsg("请求超时,请刷新重试!");
}
return Promise.reject(errorMsg);
}
);
export default service;