axios 的响应拦截器什么时候触发error

前言

在使用 axios 发送请求的过程中,我们经常会用到响应拦截器来对返回的数据进行处理。在响应拦截器中,我们可以对请求返回的数据进行统一处理,例如校验返回的状态码、统一处理错误等。其中,一个很重要的问题是,响应拦截器什么时候会触发 error?

axios 的基本使用

在开始之前,我们先来回顾一下 axios 的基本使用。

安装 axios

要使用 axios,首先需要安装它。我们可以使用 npm 来进行安装:

$ npm install axios

发送 GET 请求

发送 GET 请求非常简单,只需要调用 axios 的 get 方法即可。下面是一个发送 GET 请求的示例代码:

const axios = require('axios');

axios.get('
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

发送 POST 请求

发送 POST 请求与发送 GET 请求类似,只需要调用 axios 的 post 方法并传入请求的参数即可。下面是一个发送 POST 请求的示例代码:

const axios = require('axios');

axios.post(' {
    name: 'Alice',
    age: 20
  })
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

响应拦截器

使用 axios 发送请求时,我们可以通过设置响应拦截器,对返回的数据进行统一处理。在响应拦截器中,我们可以对请求返回的数据进行校验、统一处理错误等操作。

设置响应拦截器

要设置响应拦截器,我们可以使用 axios.interceptors.response.use 方法。这个方法接受两个参数,第一个参数是成功回调函数,第二个参数是失败回调函数。下面是一个设置响应拦截器的示例代码:

axios.interceptors.response.use(
  response => {
    // 对返回的数据进行处理
    return response;
  },
  error => {
    // 对请求错误进行处理
    return Promise.reject(error);
  }
);

响应拦截器的触发时机

响应拦截器的触发时机取决于请求的结果。当请求成功时,即使返回的状态码不是 200,响应拦截器的成功回调函数也会被触发。只有当请求出现网络错误或其他错误时,才会触发响应拦截器的失败回调函数。

示例代码

为了更好地理解响应拦截器的触发时机,下面我们来看一个示例代码。

const axios = require('axios');

// 设置响应拦截器
axios.interceptors.response.use(
  response => {
    // 对返回的数据进行处理
    return response;
  },
  error => {
    // 对请求错误进行处理
    return Promise.reject(error);
  }
);

// 发送 GET 请求
axios.get('
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

在上面的代码中,我们发送了一个 GET 请求,并设置了响应拦截器。在成功回调函数中,我们打印了返回的数据;在失败回调函数中,我们打印了错误信息。可以看到,无论请求成功或失败,响应拦截器的回调函数始终会被触发。

总结

在本文中,我们介绍了 axios 的基本使用和响应拦截器的使用。我们了解到,响应拦截器的触发时机取决于请求的结果。当请求成功时,响应拦截器的成功回调函数会被触发,无论返回的状态码是否为 200;当请求出现网络错误或其他错误时,响应拦截器的失败回调函数才会被触发。

希望本文对你理解 axios 的响应拦截器有所帮助!