axios 请求错误重复请求

一、实现:

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) {
        ElMessage.warning(`请求失败,正在进行第${retryCount + 1}次尝试重新请求...`);
        await new Promise((resolve) => setTimeout(resolve, 1000));
        config.retryCount = retryCount + 1;
        return axiosInstance(config);
      }
    }
    ElMessage.error("未知错误,请联系管理员!");
    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,
  });
};
posted @ 2025-11-07 13:59  小周同学~  阅读(0)  评论(0)    收藏  举报