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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2021-06-02 兼容性测试工具