一、实现:
import axios from "axios";
import type { InternalAxiosRequestConfig, AxiosResponse, AxiosInstance } from "axios";// 创建Axios实例
const axiosInstance: AxiosInstance = axios.create({baseURL: import.meta.env.VITE_BASE_URL,timeout: 60000 // 延时时间:60s
});// 请求拦截器
axiosInstance.interceptors.request.use((config: InternalAxiosRequestConfig) => {return config;},(error) => {return Promise.reject(error);}
);// 响应拦截器
axiosInstance.interceptors.response.use((response: AxiosResponse) => {return response.data;},async (error) => {let config = error.config;// 错误重试if (config.errorRetry) {const retryTotal: number = config.retryTotal || 3;const retryCount: number = config.retryCount || 0;if (retryCount < retryTotal) {await new Promise((resolve) => setTimeout(resolve, 1000));config.retryCount = retryCount + 1;return axiosInstance(config);}}return Promise.reject(error);}
);export default axiosInstance;
二、使用:
import request from "@/utils/request";// 登录
export const getLogin = (data?: any) => {return request({url: "/user/login",method: "post",data,errorRetry: true,retryTotal:3,});
};