axios请求拦截器错误_Axios使用拦截器全局处理请求重试
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使用拦截器全局处理请求重试相关推荐
- mt管理器错误信息java_MT管理器_MT管理器手机版_MT管理器清爽版_易玩网
MT管理器清爽版App是一款非常强大的文件管理软件,在这里你能够轻松的管理自己的文件,这款软件有着非常使用的双窗口,能够增加文件的浏览量,将其置顶,能更快的找到自己想要的文件,有需要的用户赶紧来网下载 ...
- axios请求拦截器错误_axios请求、拦截器
一.请求方式 1.get请求 //get请求 // 发送 POST 请求 axios({ method: 'get', url: '/user/12345', }); 2.post请求 // 发送 P ...
- axios请求拦截器错误_axios拦截器获取不到接口返回的response?
我的源码 我创建一个 axios 实例instance // respone拦截器 instance.interceptors.response.use( response => { retur ...
- python post请求 415_接收错误415:使用REST API发送GET请求时不支持媒体类型
我已经创建了一些python代码来与Exact在线通信,并希望通过使用python和urllib2来发送GET和POST请求.在 现在,当我尝试发送一个简单的GET请求时,它包含诸如"Acc ...
- axios请求拦截器错误_React中使用高阶组件和axios的拦截器,统一处理请求失败提示...
在前端开发中,判断边界条件和重要,通常我们要花费开发中的很大一部分时间做边界条件处理.发送ajax请求时,假设有这样一个需求: 每个页面发送ajax请求,如果请求失败,在页面上统一弹出样式一样的错误提 ...
- axios的响应拦截器 - 错误统一处理 / 获取数据繁琐
1. 问题 登录时,填写错误的用户名密码,没有错误提示(没有进入catch分支) 获取ajax的返回结果比较麻烦:res.data.data.xxxx 2.解决登录失败不报错的问题 2.1 分析原因 ...
- token拦截器android_vue.js添加拦截器,实现token认证(使用axios)
什么是token? token是一个用户自定义的任意字符串,目前开发中,token都是在服务端生成并且token的值会保存到服务器后台.只有服务器和客户端知道这个字符串,于是,这个token就成了两者 ...
- Android—OkHttp同步异步请求过程源码分析与拦截器
OkHttp同步请求步骤: 创建OkHttpClient,客户对象 创建Request,请求主体,在请求主体设置请求的url,超时时间等 用newCall(request)将Reuqest对象封装成C ...
- springboot配置拦截器,在拦截器中获取@RequestBody注解参数和post请求参数以及get请求参数
1.配置拦截器 package com.jy.gxw.config.interceptor;import org.springframework.beans.factory.annotation.Au ...
最新文章
- 【Qt】调用Python函数:无参数、单个参数、多个参数、数组参数
- 三十四、深入Vue.js语法(中篇)
- 插件修复数据_APP 热修复都懂了,你会 SDK 热修复吗?最全方案在这里!
- [USACO07NOV]牛继电器Cow Relays
- 语言速算24点的小窍门_4秒钟1道题!12岁少年三夺24点大赛冠军
- js 下拉层级多选_js控制的多级下拉菜单
- python多进程优化for循环_Python中for循环中的多进程处理和传递多个参数
- 将Visual Studio更新到最新版本
- fn有toString方法,string没有toFunction方法,自定义一个toFunction方法
- php 命令设计模式示例,php设计模式(十九)命令模式-Fun言
- IRP请求的完成与返回
- linux session存储目录,Linux session(会话)
- huffman编码的程序流程图_基于哈夫曼编码的压缩解压程序(C 语言)
- 超震惊!!微软产品经理每天的工作内容竟然是这个...
- 资源隔离的两种虚拟化技术——虚拟机容器 容器技术的资源隔离
- 【云速建站】如何实现多用户权限管理
- Rhcsa第二次课堂练习
- 蛋白质结构信息获取与解析(基于Biopython)
- 苏大强说:这才是最适合SOHO的客户开发方法
- Eclipse启动报错:org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotat
热门文章
- .NET Core 2.1.5和.NET Core SDK 2.1.403发布
- 开源的,跨平台的.NET机器学习框架ML.NET
- Metrics, tracing 和 logging 的关系
- ASP.NET WebAPI 中的参数绑定
- asp.net core源码飘香:Options组件
- 在收购 Sun 的六年后,Oracle 终于瞄准了 Java 的非付费用户
- JetBrains 加入 .NET 基金会
- 深夜爆肝:万字长文3种语言实现Huffman树(强烈建议三连)
- linux shell之$?和得到联合使用命令的结果
- 我让代码生了个孩子继承了他爸爸谁知他爸爸继承了他爷爷(16)