使用axios发送请求的时候 什么时候算请求出错,什么情况算响应出错

在设置请求拦截器与响应拦截器的时候失败状态下的情况,遇到的一些疑问

Axios.interceptors.request.use(config={
    //这里会最先拿到你的请求配置
},err=>{
//这里什么情况下会进来?并且进来之后对你接下来的程序执行有什么影响
})

Axios.interceptors.response.use(res ={
    //这里会最先拿到你的response
},err=>{
//这里什么情况下会进来? 并且进来之后对你接下来的程序执行有什么影响
})
阅读 9.9k
3 个回答
Axios.interceptors.request.use(config={
    //这里会最先拿到你的请求配置
},err=>{
  // 这里极少情况会进来,暂时没有找到主动触发的方法,估计只有浏览器不兼容时才会触发,欢迎后面同学补充
  // 看了几个GitHub的issue,有人甚至提出了这个方法是不必要的(因为没有触发的场景),不过还是建议大家按照官方的写法,避免不必要的错误
  // 进来之后没法发起请求
})

Axios.interceptors.response.use(res ={
    //这里会最先拿到你的response
    // 只有返回的状态码是2xx,都会进来这里
},err=>{
 // 目前发现三种情况会进入这里:
// 1. http状态码非2开头的都会进来这里,如404,500等
// 2. 取消请求也会进入这里,CancelToken,可以用axios.isCancel(err)来判断是取消的请求
// 3. 请求运行有异常也会进入这里,如故意将headers写错:axios.defaults.headers = '123',或者在request中有语法或解析错误也会进入这里
// 进入这里意味着请求失败,axios会进入catch分支
})

请求拦截异常抛出就说明请求之前出现错误。比如参数异常等。
返回拦截异常抛出就说明返回后出现错误。比如服务端错误500等。

同问,请求拦截器什么情况会报错?我看网上说4xx会进请求拦截器是真的吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进