axios——503响应超时重复多次请求——技能提升

embedded/2024/9/22 23:28:54/

今天在写后台管理系统时,遇到一个问题,就是每天早上一启动项目,接口会提示503超时,因此项目运行必须重新刷新请求成功后才可以正常使用。

后端同事说请求超时了,需要前端处理一下,如果是503的状态码,则需要重复请求3次,如果还请求失败才需要用户手动刷新。

参考内容如下:

axios_6">在vue或是react中进行网络请求axios用的都比较多,有时会因为网络不稳定问题导致请求超时,请求超时后常用解决方案都会重新尝试发送请求,尝试指定次数后不管成功与否皆结束本次请求

在这里插入图片描述
针对我手头上的项目antd-vue的框架,下面介绍我的处理方法:
我项目中用到的文件如下:

axiosinterceptorsjs_10">文件1:request.js+axios-interceptors.js文件

在这里插入图片描述

文件2:bootstrap.js

在这里插入图片描述

文件3:main.js

在这里插入图片描述
下面介绍各个文件中关于重复请求的写法:

解决步骤1:reques.js文件中添加以下内容

在这里插入图片描述

axios.defaults.retry = 2;//加上之前请求的一次,一共是3次
axios.defaults.retryDelay = 1000;

axiosinterceptorsjs_24">解决步骤2:axios-interceptors.js请求拦截器文件添加以下内容

 onRejected(error, options) {const { router, message } = options;if (error.response && error.response.status == 401) {message.error('认证 token 已过期,请重新登录');Cookie.remove(xsrfHeaderName);router.push('/login');return Promise.reject(error);}//主要是下面503的状态码处理if (error.response && error.response.status == 503) {var config = error.config;console.log('config', config);if (!config || !config.retry) return Promise.reject(error);config.__retryCount = config.__retryCount || 0;if (config.__retryCount >= config.retry) {return Promise.reject(error);}config.__retryCount += 1;var backoff = new Promise(function (resolve) {setTimeout(function () {resolve();}, config.retryDelay || 1);});return backoff.then(function () {return axios(config);});}else {let msg = '';if (error.response &&error.response.data &&error.response.data.error_description) {msg = error.response.data.error_description;} else if (error.response &&error.response.data &&error.response.data.error) {msg = error.response.data.error.message;} else {msg = error.message;}message.error(msg);return Promise.reject(error);}
}

在这里插入图片描述
最终效果如下所示:
在这里插入图片描述


http://www.ppmy.cn/embedded/23774.html

相关文章

ubuntu通过crontab创建定时任务,并执行sh

1、初始化crontab 执行命令 crontab -e no crontab for username - using an empty one Select an editor. To change later, run select-editor.1. /bin/nano <---- easiest2. /usr/bin/vim.basic3. /usr/bin/vim.tiny4. /bin/ed选择第一项 /bin/nano即可&#x…

k8s-pod 控制器

文章目录 k8s-pod 控制器无状态服务与有状态服务无状态服务pod 控制器ReplicationController(RC)ReplicaSet(RS)Label 和 Selector Deployment创建滚动更新回滚版本扩容/缩容暂停和恢复 StatefulSet创建扩容/缩容更新RollingUpdate->金丝雀发布OnDelete 删除 DaemonSet节点选…

设计模式之责任链模式

一、详细介绍 责任链模式是一种行为型设计模式&#xff0c;它允许将请求的发送者与接收者解耦&#xff0c;使多个对象都有机会处理请求&#xff0c;从而形成一条处理请求的责任链。当一个对象接收到请求时&#xff0c;它要么亲自处理请求&#xff0c;要么将请求转发给链上的下一…

【工具】--- Adobe Illustrator 下载-入门绘图

文章目录 软件下载入门项目可看课程 尝试使用Adobe Illustrator&#xff08;设计师常用软件&#xff09;进行科研绘图。 软件下载 阿里云盘下载 入门项目 绘制一个箭头并保持为SVG&#xff0c; 直线->画线->窗口->描边->选择想要的箭头样式->颜色->改为蓝…

【Flutter 面试题】 如何让 AppBar 的标题居中?

【Flutter 面试题】 如何让 AppBar 的标题居中? 文章目录 写在前面口述回答补充说明写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。 👏🏻 正在学 Flutter 的同学,你好! 😊 Flutte…

react useEffect中removeEventListener没生效问题解决

在useEffect中写入window.removeEventListener没有生效&#xff0c;代码如下 useEffect(() > {const handleResize () > {console.log(window.innerWidth, window.innerHeight);};window.addEventListener(resize, handleResize);return () > {window.removeEventLi…

动态规划-子序列问题1

文章目录 1. 最长递增子序列&#xff08;300&#xff09;2. 摆动序列&#xff08;376&#xff09;3. 最长递增子序列的个数&#xff08;673&#xff09;4. 最长数对链&#xff08;646&#xff09; 1. 最长递增子序列&#xff08;300&#xff09; 题目描述&#xff1a; 状态表…

CSS接触

标签&#xff1a; 块标签&#xff0c;用来给网页分块 默认占一行<div></div> 无意义标签 <span></span> 背景颜色 background-color:颜色 字体颜色color: 颜色; 使用css&#xff1a; 一、使用css- 内嵌样式&#xff1a; 1. 在h…