import axios from "axios"; import myConfig from "@/assets/js/config"; import toolClass from "@/assets/js/toolClass"; import { Message } from "element-ui"; import router from "@/router"; // 创建 axios 实例 const service = axios.create({ baseURL: myConfig.requestCtx, timeout: myConfig.requestTimeOut, // 请求超时时间 }); // 请求拦截器 service.interceptors.request.use( (config) => { let token = toolClass.getCookie(myConfig.tokenKey); if (token) config.headers["Authorization"] = `bearer ${token}`; return config; }, (error) => { // 发送失败 Promise.reject(error); } ); // 响应拦截器 service.interceptors.response.use( (response) => { // dataAxios 是 axios 返回数据中的 data const dataAxios = response.data; const { success } = dataAxios; if (dataAxios.currentDate) { sessionStorage.currentDate = new Date(dataAxios.currentDate).getTime(); } // 根据 code 进行判断 if (success) { // 处理上传文件 if (dataAxios.msg == "文件上传成功") { return dataAxios.msg; } // 如果返回值为 布尔(Boolean)类型,直接返回即可(例如:更改绑定手机号) if (typeof dataAxios.data == "boolean") { return dataAxios.data; } return dataAxios.data ? dataAxios.data : dataAxios.result; } else { // 提示错误 console.error(dataAxios.msg); } }, (error) => { if (error.response && error.response.status == 401) { toolClass.delCookie(myConfig.tokenKey); toolClass.delCookie(myConfig.userInfoKey); router.replace({ path: "/login", }); } else { if (error.response && error.response.data && error.response.data) { console.error(error.response.data.msg); Message({ message: error.response.data.msg, type: "error", }); } else { console.error("请求发生错误"); } } return Promise.reject(error); } ); export default service;