import axios from "axios"; import router from "@/router"; import { userStore } from "@/store/module/user"; import { message } from "ant-design-vue"; import { loadingStore } from "@/store/module/utils"; import { t } from "./util"; const service = axios.create({ timeout: 60000, headers: { "Content-type": "application/json;charset=utf-8" }, }); service.interceptors.request.use( (config: any) => { const user = userStore(); if (user.getToken) { config.headers["Authorization"] = user.getToken; } return config; }, () => { const loading = loadingStore(); loading.setLoading(false); } ); service.interceptors.response.use( (config) => { const user = userStore(); const { code } = config.data; if ([10002, 10003, 10011].includes(code)) { user.ClearToken(); router.push({ path: "/login" }); window.location.reload(); } else { if (code !== 0 && code) { const current = user.errorCode.find((el) => el.code === code); if (current) { message.error(current?.info); } else { message.error(t("common.unkError")); } } } return config; }, (error) => { const user = userStore(); const loading = loadingStore(); if ([404, 500].includes(error.response.status)) user.LoginOut(); window.location.reload(); loading.setLoading(false); } ); export default service; 详细解释一下这段代码
时间: 2024-04-18 13:32:27 浏览: 160
这段代码是一个封装了axios的服务对象,用于发送HTTP请求。以下是代码的详细解释:
1. 首先引入了axios库和其他一些需要的模块,比如路由器、用户存储、提示消息等。
2. 创建了一个名为`service`的axios实例,并设置了一些默认配置,比如超时时间为60秒,请求头的Content-Type为application/json;charset=utf-8。
3. 注册了请求拦截器,用于在发送请求之前对请求进行一些处理。在请求拦截器中,首先获取用户存储中的token,并将其添加到请求头的Authorization字段中。然后返回经过处理的config对象。
4. 注册了响应拦截器,用于在接收到响应之后对响应进行一些处理。在响应拦截器中,首先获取用户存储中的token和响应数据中的code字段。如果code字段的值在[10002, 10003, 10011]中,说明token已过期或无效,需要清除token并跳转到登录页面。如果code字段的值不为0且存在,根据code值从用户存储中获取相应的错误信息并显示在界面上。如果没有对应的错误信息,则显示一个通用的未知错误提示。最后返回经过处理的config对象。
5. 注册了响应错误处理函数,用于在发生错误时进行一些处理。在错误处理函数中,根据错误响应的状态码,如果是404或500,则调用用户存储的LoginOut方法清除用户信息,并刷新页面。最后设置加载状态为false。
6. 导出了这个封装了axios的服务对象。
总体来说,这段代码封装了一个通用的HTTP请求服务对象,用于发送请求并处理响应和错误。它通过请求拦截器将token添加到请求头中,通过响应拦截器处理不同的响应情况和错误情况。这样可以方便地在项目中使用该服务对象发送请求,并统一处理一些通用的逻辑。
阅读全文