axios请求失败重新发起请求_axios请求失败自动重发

本文介绍了在Vue和React项目中,如何使用axios处理请求失败的情况,特别是当token过期时,通过拦截器实现自动登录并重新发送请求,提供良好的用户体验。详细讲述了设置axios请求拦截器和响应拦截器的方法,以及登录组件的封装,确保接口调用在无权限时能自动处理。
摘要由CSDN通过智能技术生成

在做Vue、React项目的时候常会用axios请求库来与后端进行数据交互。我们通常采用一个用户凭证token来验证用户身份,服务器根据token进行判断当前用户是否有权限调用接口。

经常遇到的一个问题是,调用接口时token可能已经过期,此时调用接口会失败,需要重新登录后再调用接口。通常我们可能处理为,用户走完登录流程后再重新手动触发一次请求。这样的实现本身没什么问题,但是给用户的操作体验上有被中断的感觉,今天尝试解决了一下这个问题。

一、业务痛点

我的业务场景是,当一个接口(比如”用户发表评论“)返回token过期或者未验证的状态码时,调出登录弹窗,登录成功后再次发送评论请求。当然我们可以在评论接口处对状态码进行判断,token失效则重新发送请求;如果有其它接口也类似处理。这个方法最大的问题在于对于每个接口都要单独处理,然而程序员最大的优点就是——懒。这个方法虽然可行,对于一个懒人来说并不怎么好用,那更好的办法的是什么呢?

二、业务实现——以登录过期,重新发送请求为例(Vue实现)

axios请求拦截器本身可以获取请求的地址、参数、超时时间等配置,请求的重发变得很简单;同时axios库的请求返回为一个promise对象,得益于Promise强大的嵌套异步处理,可以使得请求接口调用对请求重发“无感”——即调用接口的时候你可以默认它一定成功,因为失败的情况在拦截器已经重发了。

1. 使用拦截器进行请求重发

function getToken () {

return localStorage.getItem('token')

}

function clearToken () {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值