取消重复请求

万能模板。

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拦截器拦截重复请求相关推荐

  1. php 请求拦截,解决拦截器对ajax请求的拦截实例详解

    解决拦截器对ajax请求的的拦截 拦截器配置:public boolean preHandle(HttpServletRequest request, HttpServletResponse resp ...

  2. java 判断请求为 ajax请求_Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求...

    Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java 判断请求是不是ajax请求,Java判断是否为ajax请求 >>>>>> ...

  3. axios config里自定义属性,使用拦截器拦截,无法拿到自定义属性问题

    axios config里自定义属性,使用拦截器拦截,无法拿到自定义属性问题 最新版本axios限制了键,对键值做了白名单处理. 解决思路: 修改源码中的内容,添加一个键来报错额外属性. 或者:使用老 ...

  4. Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求

    Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求 Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java 判断 ...

  5. 修改拦截器里的请求头_OkHttp4 源码分析(1) 请求流程分析

    square/okhttp​github.com 本文基于OkHttp4.7.1分析 同步请求示例代码 OkHttpClient client = new OkHttpClient.Builder() ...

  6. 在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案

    在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 参考文章: (1)在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 (2)https: ...

  7. 【项目经验】拦截器拦截入参出参

    文章目录 拦截器拦截入参出参 入参 出参 拦截器拦截入参出参 入参 @Overridepublic boolean preHandle(HttpServletRequest request, Http ...

  8. spring拦截器 拦截和排除接口冲突

    以下为springboot案例: 场景:  某个规则下的绝大部分接口路径不需要经过拦截器, 但其中的某几个接口又需要经过拦截器. 例如: "/api/register/**" 模式 ...

  9. axios 最全 请求拦截器 响应拦截器 配置公共请求头 超时时间 以及get delete post put 四种请求传参方式

    axios 拦截器 请求拦截器 请求拦截器的作用是在请求发送前进行一些操作 例如在每个请求体里加上token,统一做了处理如果以后要改也非常容易 响应拦截器 响应拦截器的作用是在接收到响应后进行一些操 ...

最新文章

  1. 公司虚拟化平台VMware vCenter Server无法连接故障排查解决
  2. 进程通信学习笔记(记录上锁)
  3. 数字图像处理——第四章 频率域图像增强
  4. 中国电梯市场产量规模与盈利趋势分析报告2022-2028年
  5. 成为人上人,而不是人上人永远的崇拜者
  6. python脚本编程手册_Python 入门指南 — Python2.7 手册 2.7 documentation - 脚本之家在线手册...
  7. 仿微软Office 迷你工具条(简易编辑器)
  8. @kafkalistener中id的作用_无意中测试了下MySQL里面的join操作,发现还是存在理解偏差...
  9. 你需要的不是大数据 而是正确的数据~
  10. Udacity也弃用React Native了 !
  11. wget下载网络资源
  12. 复杂网络-无标度网络matlab代码实现
  13. 上古计算机语言,微软开源其上古编程语言GW-BASIC
  14. 安卓手机投屏到电脑的问题可以通过一个神器解决
  15. KF、EKF、IEKF、UKF卡尔曼滤波器
  16. 讯飞输入法android版升级日志,讯飞输入法Android版7.0 实力解锁三大输入难题
  17. 如何用Python快速实现一个垃圾分类APP【附带微信小程序】
  18. 怎么安装LINUX系统
  19. Unity用代码设置图片的压缩格式(AssetImporter/TextureImporter)
  20. 相传国际象棋是古印度舍罕王的宰相达依尔发明的.舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐.这位聪明的宰相指着8*8共64格的象棋说:陛下,请您赏给我一些麦子吧.就在棋盘的第1格放1粒,第2格放2粒

热门文章

  1. openmv 神经网络 超出内存_openmv caffe专栏 1
  2. Avada学习之-如何修改Header-logo和favicon图标
  3. 愿得一人心,白首不相离!
  4. 关于灰度拉伸的一点思考
  5. 创客教师必备技能:Mixly第三方库开发
  6. RecyclerView缓存机制(scrap view)
  7. 【scipy】 scipy.ndimage 数学形态学(Mathematical morphology)
  8. 无人机航测-倾斜摄影在房地一体权籍的应用
  9. java信息管理_java成绩信息管理
  10. WORKNC2018-2017基础到实战编程视频教程 三四五轴 大模编程