axios拦截器

333 阅读2分钟

axios拦截器

  • 当使用 Axios 发送请求时,拦截器允许你在请求被发送或响应返回之前对其进行拦截和处理。Axios 提供了两种类型的拦截器:请求拦截器和响应拦截器。

一、请求拦截器(Request Interceptors)

  • 请求拦截器会在发送请求之前执行,允许你对请求进行修改、添加请求头、进行认证等操作。可以使用 axios.interceptors.request.use 方法来注册请求拦截器。

示例:

axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // 可以修改请求配置、添加请求头等
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

下面是一些常见的 config 配置选项:

  • url:要请求的 URL 地址。
  • method:请求的 HTTP 方法,如 GET、POST、PUT、DELETE 等。
  • params:要作为查询字符串发送的参数对象,用于 GET 请求。
  • data:要作为请求体发送的数据,用于 POST、PUT 等请求。
  • headers:请求的头部信息,可以设置自定义的请求头。
  • timeout:请求超时时间,单位是毫秒。
  • withCredentials:是否携带跨域请求中的凭证信息。
  • validateStatus:自定义响应状态码的验证函数。
  • responseType:响应的数据类型,如 JSON、blob 等。
  • onUploadProgress:上传进度回调函数。
  • onDownloadProgress:下载进度回调函数。

二、响应拦截器

  • 响应拦截器会在接收到响应之后执行,允许你对响应进行统一处理、进行数据转换、错误处理等操作。可以使用 axios.interceptors.response.use 方法来注册响应拦截器。

示例这里是.then之前拦截的:

  • function (response) 这里是.then之前拦截的
axios.interceptors.response.use(
  function (response) {
    // 对响应数据做些什么
    return response;
  },
  function (error) {
    // 对响应错误做些什么
    return Promise.reject(error);
  }
);

  • 通过注册拦截器,你可以在每次请求之前和响应返回之后对请求和响应进行全局处理。这样可以避免在每个请求中重复编写相同的逻辑,提高代码的可维护性和复用性。
  • 需要注意的是,拦截器可以注册多个,它们会按照注册的顺序依次执行。在请求拦截器中,你可以修改请求配置并返回修改后的配置对象。在响应拦截器中,你可以处理响应数据并返回处理后的响应。
  • 拦截器可以用来实现各种功能,例如添加认证信息、请求错误处理、请求日志记录等。根据具体的需求,你可以编写适合自己项目的拦截器逻辑。