Axios拦截器

Axios提供了拦截器的接口,让我们能够全局处理请求和响应。Axios拦截器会在Promise的then和catch调用前拦截到。

请求拦截示例

axios.interceptors.request.use(function (config) {

// 在发起请求请做一些业务处理

return config;

}, function (error) {

// 对请求失败做处理

return Promise.reject(error);

});

响应拦截示例

axios.interceptors.response.use(function (response) {

// 对响应数据做处理

return response;

}, function (error) {

// 对响应错误做处理

return Promise.reject(error);

});

Axios实现请求重试

在某些情况(如请求超时),我们可能会希望能够重新发起请求。这时可以在响应拦截器做下处理,对请求发起重试。

请求重试需要考虑三个因素:

重试条件

重试次数

重试时延

配置

axios.defaults.retry = 1; //重试次数

axios.defaults.retryDelay = 1000;//重试延时

axios.defaults.shouldRetry = (error) => true;//重试条件,默认只要是错误都需要重试

响应拦截重试

axios.interceptors.response.use(undefined, (err) => {

var config = err.config;

// 判断是否配置了重试

if(!config || !config.retry) return Promise.reject(err);

if(!config.shouldRetry || typeof config.shouldRetry != 'function') {

return Promise.reject(err);

}

//判断是否满足重试条件

if(!config.shouldRetry(err)) {

return Promise.reject(err);

}

// 设置重置次数,默认为0

config.__retryCount = config.__retryCount || 0;

// 判断是否超过了重试次数

if(config.__retryCount >= config.retry) {

return Promise.reject(err);

}

//重试次数自增

config.__retryCount += 1;

//延时处理

var backoff = new Promise(function(resolve) {

setTimeout(function() {

resolve();

}, config.retryDelay || 1);

});

//重新发起axios请求

return backoff.then(function() {

return axios(config);

});

});

axios请求拦截器错误_Axios使用拦截器全局处理请求重试相关推荐

  1. mt管理器错误信息java_MT管理器_MT管理器手机版_MT管理器清爽版_易玩网

    MT管理器清爽版App是一款非常强大的文件管理软件,在这里你能够轻松的管理自己的文件,这款软件有着非常使用的双窗口,能够增加文件的浏览量,将其置顶,能更快的找到自己想要的文件,有需要的用户赶紧来网下载 ...

  2. axios请求拦截器错误_axios请求、拦截器

    一.请求方式 1.get请求 //get请求 // 发送 POST 请求 axios({ method: 'get', url: '/user/12345', }); 2.post请求 // 发送 P ...

  3. axios请求拦截器错误_axios拦截器获取不到接口返回的response?

    我的源码 我创建一个 axios 实例instance // respone拦截器 instance.interceptors.response.use( response => { retur ...

  4. python post请求 415_接收错误415:使用REST API发送GET请求时不支持媒体类型

    我已经创建了一些python代码来与Exact在线通信,并希望通过使用python和urllib2来发送GET和POST请求.在 现在,当我尝试发送一个简单的GET请求时,它包含诸如"Acc ...

  5. axios请求拦截器错误_React中使用高阶组件和axios的拦截器,统一处理请求失败提示...

    在前端开发中,判断边界条件和重要,通常我们要花费开发中的很大一部分时间做边界条件处理.发送ajax请求时,假设有这样一个需求: 每个页面发送ajax请求,如果请求失败,在页面上统一弹出样式一样的错误提 ...

  6. axios的响应拦截器 - 错误统一处理 / 获取数据繁琐

    1. 问题 登录时,填写错误的用户名密码,没有错误提示(没有进入catch分支) 获取ajax的返回结果比较麻烦:res.data.data.xxxx 2.解决登录失败不报错的问题 2.1 分析原因 ...

  7. token拦截器android_vue.js添加拦截器,实现token认证(使用axios)

    什么是token? token是一个用户自定义的任意字符串,目前开发中,token都是在服务端生成并且token的值会保存到服务器后台.只有服务器和客户端知道这个字符串,于是,这个token就成了两者 ...

  8. Android—OkHttp同步异步请求过程源码分析与拦截器

    OkHttp同步请求步骤: 创建OkHttpClient,客户对象 创建Request,请求主体,在请求主体设置请求的url,超时时间等 用newCall(request)将Reuqest对象封装成C ...

  9. springboot配置拦截器,在拦截器中获取@RequestBody注解参数和post请求参数以及get请求参数

    1.配置拦截器 package com.jy.gxw.config.interceptor;import org.springframework.beans.factory.annotation.Au ...

最新文章

  1. 【Qt】调用Python函数:无参数、单个参数、多个参数、数组参数
  2. 三十四、深入Vue.js语法(中篇)
  3. 插件修复数据_APP 热修复都懂了,你会 SDK 热修复吗?最全方案在这里!
  4. [USACO07NOV]牛继电器Cow Relays
  5. 语言速算24点的小窍门_4秒钟1道题!12岁少年三夺24点大赛冠军
  6. js 下拉层级多选_js控制的多级下拉菜单
  7. python多进程优化for循环_Python中for循环中的多进程处理和传递多个参数
  8. 将Visual Studio更新到最新版本
  9. fn有toString方法,string没有toFunction方法,自定义一个toFunction方法
  10. php 命令设计模式示例,php设计模式(十九)命令模式-Fun言
  11. IRP请求的完成与返回
  12. linux session存储目录,Linux session(会话)
  13. huffman编码的程序流程图_基于哈夫曼编码的压缩解压程序(C 语言)
  14. 超震惊!!微软产品经理每天的工作内容竟然是这个...
  15. 资源隔离的两种虚拟化技术——虚拟机容器 容器技术的资源隔离
  16. 【云速建站】如何实现多用户权限管理
  17. Rhcsa第二次课堂练习
  18. 蛋白质结构信息获取与解析(基于Biopython)
  19. 苏大强说:这才是最适合SOHO的客户开发方法
  20. Eclipse启动报错:org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotat

热门文章

  1. .NET Core 2.1.5和.NET Core SDK 2.1.403发布
  2. 开源的,跨平台的.NET机器学习框架ML.NET
  3. Metrics, tracing 和 logging 的关系
  4. ASP.NET WebAPI 中的参数绑定
  5. asp.net core源码飘香:Options组件
  6. 在收购 Sun 的六年后,Oracle 终于瞄准了 Java 的非付费用户
  7. JetBrains 加入 .NET 基金会
  8. 深夜爆肝:万字长文3种语言实现Huffman树(强烈建议三连)
  9. linux shell之$?和得到联合使用命令的结果
  10. 我让代码生了个孩子继承了他爸爸谁知他爸爸继承了他爷爷(16)