Axios请求失败重刷接口

news/2024/7/10 1:33:52 标签: vue, axios, 接口重刷, 接口异常重刷

需求背景

页面接口请求时偶尔会出现 Network Error 异常报错,重新请求就会请求成功
接口没办法捕获异常原因,前端来做一次重刷解决问题

  1. net::ERR_SSL_PROTOCOL_ERROR
  2. net::ERR_CONNECTION_REFUSED
    在这里插入图片描述

解决思路

  1. 记录请求map(以url为唯一标识),并设置单个接口重刷最大次数
    格式:{ ‘https://xxxx/xxx?id=1’, 0 }
  2. 请求成功时删除请求记录
  3. 请求错误时拦截错误信息,满足条件,记录错误
  4. error.config 为上一次请求,调用service(error.config)即可请求

解决办法

// 记录请求 - 请求错误后++
const requestMap = {}
// 最大请求次数
const REQUEST_MAX_COUNT = 2

// 创建axios实例
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API || '',
  timeout: 60000
})
service.interceptors.request.use(request => {
  // 请求时记录请求地址
  const { config: { urlType = '' } = {} } = request
  if (request.url) {
    const requestKey = request.url
    !(requestKey in requestMap) && (requestMap[requestKey] = 0)
  }
  // ....
  return request
}, error => {})

// 响应时拦截
service.interceptors.response.use(async response => {
  // 请求成功,删掉请求记录
  const { status, data, config } = response
  config.url && config.url in requestMap && (delete requestMap[config.url])
  // ....
}, error => {
  // 报错,错误++,重新请求
  if (error.message === 'Network Error') {
    try {
      const requestKey = error.config.url
      requestMap[requestKey]++
      if (requestMap[requestKey] <= REQUEST_MAX_COUNT) {
        return service(error.config)
      }
    } catch (e) {
      console.log('Network Error try-catch-error', e)
    }
  } else {}
})

参考链接🔗

https://blog.csdn.net/MFWSCQ/article/details/125546946
https://blog.csdn.net/weixin_42349568/article/details/118408271
https://juejin.cn/post/6968487137670856711


http://www.niftyadmin.cn/n/378966.html

相关文章

如何在 Python 2 和 3 之间切换

文章目录 在 Python 2 和 3 之间切换在 Linux 和 macOS 中切换 Python 2 和 3 在 Windows 中切换 Python 2 和 3 Python 在不同的操作系统环境&#xff08;Windows、macOS、Linux 和 Android&#xff09;中有不同的版本。 自 1991 年以来&#xff0c;它已经有了三个主要版本&am…

牛客网Linux错题三

1.Linux什么情况下会发生page fault(B) A.系统可用内存不够时 B.所需访问虚拟内存未被挂载 C.当开始进行 swap 交换时 D.当进程被挂起时 这里设备分为物理内存和虚拟内存&#xff0c;如果进程借助物理内存运行&#xff0c;进程运行所需内存大于物理内存时也无法启动进程。…

2023年5月第4周大模型荟萃

2023年5月第4周大模型荟萃 2023.5.31版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、AI 图像编辑技术 DragGAN 问世 近日&#xff0c;来自 Google 的研究人员与 Max Planck 信息学研究所和麻省理工学院 CSAIL 一起&#xff0c;发布了…

Java访问QingCloud青云QingStor对象存储(公有云、私有云)

一、参考API 官网SDK文档参考&#xff1a;Java SDK - 公有云文档中心 (qingcloud.com) 二、环境说明 公有云跟私有云区别&#xff1a; 使用公有云QingStor&#xff0c;直接按照官网sdk直接可对接&#xff0c;私有云QingStor的话&#xff0c;需要设置具体的私有云请求地址及z…

编程之美:揭示Python装饰器的神秘面纱

Python是一种广泛使用的高级编程语言&#xff0c;它的语法简洁明了&#xff0c;且内置了丰富的数据处理和计算功能。其中&#xff0c;装饰器&#xff08;Decorator&#xff09;是Python中的一个特色功能&#xff0c;它可以让我们以更优雅、更方便的方式来修改或增强函数和方法的…

智能家居家电上应用的触摸芯片有哪些?

电容式触摸芯片&#xff0c;具有灵敏度高、抗干扰能力强&#xff0c;防水防尘、高可靠性等优点已逐步替代传统机械式按钮&#xff0c;广泛应用于家电、智能家居、消费电子、工控等领域。 触摸感应可以穿透绝缘材质检测人体手指带来的电荷移动&#xff0c;从而判断人体手指触摸…

快进来,一起复习一下抽象类和接口

背景 工作也有四年了&#xff0c;基础的东西许久不看有些遗忘。一起来复习一下吧 语法区别 构造方法&#xff1a;抽象类可以有构造方法&#xff0c;接口中不能有构造方法 成员变量&#xff1a;抽象类和接口中都可以包含静态成员变量&#xff0c;抽象类中的静态成员变量的访问…

UFS 2 -UFS架构简介2

UFS 2 -UFS架构简介2 1 UFS架构简介1.1 System Boot and Enumeration1.2 UFS Interconnect (UIC) Layer1.2.1 UFS Physical Layer Signals1.2.2 MIPI UniPro1.2.3 MIPI UniPro Related Attributes 1.3 UFS Transport Protocol (UTP) Layer1.3.1 Architectural Model1.3.1.1 Cli…