axios拦截器拦截重复请求
取消重复请求
万能模板。
import axios from 'axios'
const baseURL = "http://xxxx";
const instance = axios.create({ baseURL: baseURL, timeout: 30000 });
// 定义存放已发送但未响应的请求
const requestMap = new Map();
// 获取请求的唯一标识
const getRequestIdentify = (config, isReuest = false) => {// 由于不同项目的实现方式略有不同,url、params和data的格式可能略有不同,使用该方法时要根据实际情况进行调试修改let url = config.urlif (isReuest) {url = url.startsWith('/') ? baseURL + url : baseURL + '/' + url;}return config.method === 'get' ? encodeURI(url + JSON.stringify(config.params)) : encodeURI(url + (typeof config.data === 'string' ? config.data : JSON.stringify(config.data)))
}
// HTTPrequest拦截
instance.interceptors.request.use(config => {const requestData = getRequestIdentify(config, true);if (requestMap.has(requestData)) {// map中存在该请求,不再重复发起return Promise.reject(new Error('重复请求'))} else if (!config.canReapeat) {// 通过在请求中设置 canReapeat 参数,允许特殊接口的重复提交// 若map中没有该请求,则将请求存入map,并发起请求requestMap.set(requestData, true)}//...return config
}, error => {return Promise.reject(error)
})// HTTPresponse拦截
instance.interceptors.response.use(res => {const requestData = getRequestIdentify(res.config);// 请求获得响应后,将该请求从map中移除,以使后面的请求正常发送。if (requestMap.has(requestData)) {requestMap.delete(requestData)}let data = res.data;if(data.code==666){return data;}
}, (error) => {return Promise.reject(new Error(error))
})
axios拦截器拦截重复请求相关推荐
- php 请求拦截,解决拦截器对ajax请求的拦截实例详解
解决拦截器对ajax请求的的拦截 拦截器配置:public boolean preHandle(HttpServletRequest request, HttpServletResponse resp ...
- java 判断请求为 ajax请求_Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求...
Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java 判断请求是不是ajax请求,Java判断是否为ajax请求 >>>>>> ...
- axios config里自定义属性,使用拦截器拦截,无法拿到自定义属性问题
axios config里自定义属性,使用拦截器拦截,无法拿到自定义属性问题 最新版本axios限制了键,对键值做了白名单处理. 解决思路: 修改源码中的内容,添加一个键来报错额外属性. 或者:使用老 ...
- Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求
Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求 Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java 判断 ...
- 修改拦截器里的请求头_OkHttp4 源码分析(1) 请求流程分析
square/okhttpgithub.com 本文基于OkHttp4.7.1分析 同步请求示例代码 OkHttpClient client = new OkHttpClient.Builder() ...
- 在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案
在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 参考文章: (1)在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 (2)https: ...
- 【项目经验】拦截器拦截入参出参
文章目录 拦截器拦截入参出参 入参 出参 拦截器拦截入参出参 入参 @Overridepublic boolean preHandle(HttpServletRequest request, Http ...
- spring拦截器 拦截和排除接口冲突
以下为springboot案例: 场景: 某个规则下的绝大部分接口路径不需要经过拦截器, 但其中的某几个接口又需要经过拦截器. 例如: "/api/register/**" 模式 ...
- axios 最全 请求拦截器 响应拦截器 配置公共请求头 超时时间 以及get delete post put 四种请求传参方式
axios 拦截器 请求拦截器 请求拦截器的作用是在请求发送前进行一些操作 例如在每个请求体里加上token,统一做了处理如果以后要改也非常容易 响应拦截器 响应拦截器的作用是在接收到响应后进行一些操 ...
最新文章
- 公司虚拟化平台VMware vCenter Server无法连接故障排查解决
- 进程通信学习笔记(记录上锁)
- 数字图像处理——第四章 频率域图像增强
- 中国电梯市场产量规模与盈利趋势分析报告2022-2028年
- 成为人上人,而不是人上人永远的崇拜者
- python脚本编程手册_Python 入门指南 — Python2.7 手册 2.7 documentation - 脚本之家在线手册...
- 仿微软Office 迷你工具条(简易编辑器)
- @kafkalistener中id的作用_无意中测试了下MySQL里面的join操作,发现还是存在理解偏差...
- 你需要的不是大数据 而是正确的数据~
- Udacity也弃用React Native了 !
- wget下载网络资源
- 复杂网络-无标度网络matlab代码实现
- 上古计算机语言,微软开源其上古编程语言GW-BASIC
- 安卓手机投屏到电脑的问题可以通过一个神器解决
- KF、EKF、IEKF、UKF卡尔曼滤波器
- 讯飞输入法android版升级日志,讯飞输入法Android版7.0 实力解锁三大输入难题
- 如何用Python快速实现一个垃圾分类APP【附带微信小程序】
- 怎么安装LINUX系统
- Unity用代码设置图片的压缩格式(AssetImporter/TextureImporter)
- 相传国际象棋是古印度舍罕王的宰相达依尔发明的.舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐.这位聪明的宰相指着8*8共64格的象棋说:陛下,请您赏给我一些麦子吧.就在棋盘的第1格放1粒,第2格放2粒