axios如何自动重新发送请求

本文介绍如何利用axios-retry库实现HTTP请求的自动重试机制,包括安装、配置及具体应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在实际工作过程中,遇到这样一个需求:使用axios在调用后台接口超时或是报某个特性的错误码时,需要重新发送请求。此时用到一个第三方的库:axios-retry解决了这个问题。

正文

第一步: 安装

npm install axios-retry

第二步:引入并配置

// ES6
import axiosRetry from 'axios-retry';
 
axiosRetry(axios, { retries: 3 });
 
axios.get('http://example.com/test') // 第一个请求失败,第二个返回“OK”
  .then(result => {
    result.data; // 'ok'
  });
 
// 请求之间的指数后退重试延迟
axiosRetry(axios, { retryDelay: axiosRetry.exponentialDelay});
 
// 自定义重试延迟
axiosRetry(axios, { retryDelay: (retryCount) => {
  return retryCount * 1000;
}});
 
// 使用自定义AXIOS实例
const client = axios.create({ baseURL: 'http://example.com' });
axiosRetry(client, { retries: 3 });
 
client.get('/test') // 第一个请求失败,第二个返回“OK”
  .then(result => {
    result.data; // 'ok'
  });
 
// 允许特定于请求的配置
client
  .get('/test', {
    'axios-retry': {
      retries: 0
    }
  })
  .catch(error => { // 第一个请求失败
    error !== undefined
  });

例子:

// axios创建一个实例
let instance = axios.create({
    baseURL: config.baseURL, // api的base_url
});
axiosRetry(instance, {
    retries: 5,  //设置自动发送请求次数
    retryDelay: (retryCount) => {
        return retryCount * 500;
    }, retryCondition: (err) => {
        return err.response.status == 429  //429时重新发起请求
    }
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值