Axios请求失败重刷接口

这篇具有很好参考价值的文章主要介绍了Axios请求失败重刷接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求背景

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

  1. net::ERR_SSL_PROTOCOL_ERROR
  2. net::ERR_CONNECTION_REFUSED
    Axios请求失败重刷接口

解决思路

  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文章来源地址https://www.toymoban.com/news/detail-465788.html

到了这里,关于Axios请求失败重刷接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 优化axios封装之配置使用AbortController取消重复请求 防止用户频繁操作调用接口

    当数据量过大请求缓慢时用户点击按钮或者tab标签页快速重复调用同一个请求时,会导致数据错乱,当只需要最新的请求数据,并且中断上一个重复请求时,可以利用axios的CancelToken去中断之前的请求。 ps:由于不是所有请求都需要这个逻辑 所以我封装的时候增加了请求配置项

    2024年02月03日
    浏览(58)
  • 关于axios请求java接口中的@RequestParam、@PathVariable及@RequestBody不同接参类型的用法

    一、前端传json对象,后端指定接收json对象中的哪个参数。 (1)前端请求 (2)后端接口(接参方式) 二、axios使用restful规范的get请求,后端使用@PathVariable接参 后端接口路径+属性值;注意!!!路径后面有反斜杠/,注意不要写漏了,不然value就会变成路径的一部分,请求路径就会

    2024年02月15日
    浏览(49)
  • html-css-js使用axios和ajax获取接口并携带请求头+获取输入框或选择器内容

    需求:使用axios或者Ajax获取接口,有些需要获取到输入框,或者选择器内容之后传给接口,也就是写了几种不同请求的方法,网上有很多方法,本文章算是个归纳吧。 1.github下载axios 我框住的这俩下谁都行,我下的是第一个 Releases · axios/axios (github.com)  下载后解压打开找到

    2024年02月03日
    浏览(45)
  • uniapp开发微信小程序解决上线:审核问题“包含明文的AppSecret,存在泄漏的安全风险“以及上线之后接口请求失败

    解决: 原因是我在登录通过uni.login获取到code然后用code获取openid时用到了AppSecret,因为之前后端没空写接口我就在前端自己获取的openid, 解决方案:小程序秘钥放前端审核不通过说不安全,那我就让后端写个接口返回给我,然后仔细检查下代码中是否用到了AppSecret,去掉AppS

    2024年02月11日
    浏览(49)
  • 【axios网络请求库】认识Axios库;axios发送请求、创建实例、创建拦截器、封装请求

    功能特点: 在浏览器中发送 XMLHttpRequests 请求 在 node.js 中发送 http请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 支持多种请求方式: axios(config) axios.request(config) axios.get(url[, config]) axios.delete(url[, config]) axios.head(url[, config]) axios.post(url[, data[, config]]) axios.put(url[, data[, c

    2024年02月10日
    浏览(43)
  • axios使用axiosSource.cancel取消请求后怎么恢复请求,axios取消请求和恢复请求实现

    在前端做大文件分片上传,或者其它中断请求时,需要暂停或重新请求,比如这里大文件上传时,可能会需要暂停、继续上传,如下GIF演示: 这里不详细说文件上传的处理和切片细节,后续有时间在出一篇,大文件上传,切片上传、断点续传、秒传等😀。 不扯远了,紧接本

    2024年02月12日
    浏览(43)
  • 【axios】vue中axios的请求配置

    注意:本文实例化为TS版 axios 是一个基于 promise 封装的网络请求库,它是基于 原生XHR 进行二次封装,可以说是 XHR 的一个子集,而 XHR 又是 Ajax 的一个子集 从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API 拦截请求和响应 转换请求数据和响应数据 取消请求

    2024年02月10日
    浏览(38)
  • Vue3 网络请求——axios 高级用法之 axios 拦截器实战与并发请求

    Axios 是一个流行的基于 Promise 的 HTTP 客户端库,用于在浏览器和 Node.js 中发出 HTTP 请求。 Axios 还支持请求和响应的拦截器。接下来通过这篇文章,我们一起来学习和了解一下 Axios 拦截器和并发请求,通过实际代码来介绍如何使用 Axios 拦截器。 拦截器会在发生响应请求之前和

    2024年02月10日
    浏览(45)
  • vue3【使用axios并封装axios请求】

    第一步:安装axios 第二步:编写请求文件 新建request.js 简单的axios封装,里面相关提示信息,自己可以引入element-plus去添加

    2024年02月04日
    浏览(64)
  • axios请求超时,设置重新请求的完美解决方法

    自从使用Vue2之后,就使用官方推荐的axios的插件来调用API,在使用过程中,如果服务器或者网络不稳定掉包了, 你们该如何处理呢? 下面我给你们分享一下我的经历。 具体原因 最近公司在做一个项目, 服务端数据接口用的是Php输出的API, 有时候在调用的过程中会失败, 在谷歌浏

    2024年02月20日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包