axios封装
import axios from "axios"; import { Modal, message } from "antd"; import i18next from "i18next"; const { CancelToken } = axios; const cancelTokenArr = {}; const _axios = axios.create({ baseURL: "/console/v1", }); _axios.interceptors.request.use( (config) => { const token = sessionStorage.getItem("token"); if (token) { config.headers["token"] = token; } if (config.cancel) { config.cancelToken = new CancelToken((c) => { cancelTokenArr[config.cancel] = c; }); } return config; }, (error) => { return Promise.reject(error); } ); _axios.interceptors.response.use( (response) => { const res = response.data; if (res instanceof Blob) { return response; } else if ( res.code == "000401") { sessionStorage.removeItem("token"); message.destroy(); Modal.destroyAll(); Modal.warning({ title: "登录过期", content: "登录状态失效,请重新登录", onOk() { location.href = ""; }, }); } else if (res.code !== "000000") { message.error(res?.message); } else { return res; } }, (error) => { const res = error.response; if (res?.status && (res?.status === 403 || res?.status === 401)) { return { status: "000403", message: "验签不通过!请重新登录", }; } else { message.error(res?.data?.error_msg ); return Promise.reject(res?.data); } } ); _axios.cancelAjax = (name, msg) => { if (cancelTokenArr[name]) { cancelTokenArr[name](msg || "强制中断了请求"); cancelTokenArr[name] = null; } }; export default _axios;
本文来自博客园,作者:Janni,转载请注明原文链接:https://www.cnblogs.com/janni/p/16336889.html