Axios 的响应拦截器如何使用?响应拦截器的用法以及实践案例

Axios 的响应拦截器允许在请求得到响应后,对响应数据进行处理。它类似于 Vue 的全局前置守卫,可以在响应发送回执行环境之前,修改、过滤响应数据。

用 Apifox,节省研发团队的每一分钟

Axios 的响应拦截器如何使用?响应拦截器的用法以及实践案例

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

Axios 的响应拦截器允许在请求得到响应后,对响应数据进行处理。它类似于 Vue 的全局前置守卫,可以在响应发送回执行环境之前,修改、过滤响应数据。

Axios 的响应拦截器的用法
Axios 官网首页

扩展:如果你想尝试更便捷、高效的方式来调试 API,那么可以使用 Apifox。Apifox 提供了直观的界面,让你轻松管理并调试项目接口。

Axios 响应拦截器的作用

  • 对响应数据进行处理,如格式化、过滤等
  • 对响应错误进行统一处理
  • 在发送响应前修改响应配置,如添加/修改 HTTP 头等

Axios 响应拦截器的概念

Axios 中,响应拦截器允许你在收到服务器响应之后,但在 .then.catch 处理响应数据之前,对响应进行操作。这对于在全局范围内处理错误、进行数据转换或者添加授权头部等操作非常有用。

Axios 响应拦截器的写法

Axios 中,有两种常见的响应拦截器写法,一种是全局拦截器,另一种是特定请求的拦截器。

全局拦截器

全局响应拦截器会应用于每个请求的响应,无论是成功的还是失败的。

// 添加响应拦截器
axios.interceptors.response.use(
  function(response) {
    // 对响应数据做些什么
    return response;
  },
  function(error) {
    // 对响应错误做些什么
    return Promise.reject(error);
  }
);

特定请求的拦截器

你也可以为特定的请求添加响应拦截器,这将只影响该请求的响应。

axios.get('/user/12345', {
  // 请求配置
}).then(function(response) {
  // 请求成功处理
}).catch(function(error) {
  // 请求失败处理
});

// 为特定请求添加响应拦截器
axios.interceptors.response.use(
  function(response) {
    // 对响应数据做些什么
    return response;
  },
  function(error) {
    // 对响应错误做些什么
    return Promise.reject(error);
  }
);

实践案例

假设我们要处理所有响应中的错误状态码,并在控制台输出错误信息。我们可以利用响应拦截器来实现这一目标。
首先,让我们创建一个基本的 Axios 请求,并设置全局的响应拦截器来处理错误。

// 导入 Axios 库
const axios = require('axios');

// 添加全局响应拦截器
axios.interceptors.response.use(
  function(response) {
    // 对响应数据做些什么
    return response;
  },
  function(error) {
    // 对响应错误做些什么
    if (error.response) {
      console.error('Error status:', error.response.status);
      console.error('Error data:', error.response.data);
    }
    return Promise.reject(error);
  }
);

// 发起 Axios 请求
axios.get('https://jsonplaceholder.typicode.com/posts/1')
  .then(function(response) {
    console.log('Response data:', response.data);
  })
  .catch(function(error) {
    console.error('Request failed:', error);
  });

在这个案例中,全局的响应拦截器会在每个响应中检查错误状态码,并输出错误信息到控制台。

Axios 响应拦截器响应信息
Axios 请求成功返回的信息

提示、技巧与注意事项

  • 顺序问题: 拦截器的顺序很重要。响应拦截器的执行顺序是按照你添加它们的顺序来的,所以请确保你添加的拦截器是有意义的。
  • 修改数据: 响应拦截器可以修改响应数据。你可以在拦截器中对响应数据进行转换,例如将 JSON 数据转换为对象。
  • 错误处理: 响应拦截器非常适合处理全局的错误情况,如处理不同的 HTTP 状态码,但不要忽略针对特定请求的错误处理。

使用 Apifox 来 Mock 数据

当我们作为前端开发人员使用 Axios 来进行接口请求时,有时候我们可能会遇到一个问题:等待后端开发人员提供接口。这往往会导致我们在开发时遇到阻碍,进而影响项目的进度。不过,我了解到一个非常实用的工具可以解决这个问题,它就是 Apifox

Apifox 是一个比 Postman 更强大的接口测试工具,Apifox = Postman + Swagger + Mock + JMeter,Apifox 支持调试 http(s)、WebSocket、Socket、gRPC、Dubbo 等协议的接口,并且集成了 IDEA 插件。在后端人员写完服务接口时,测试阶段可以通过 Apifox 来校验接口的正确性,图形化界面极大的方便了项目的上线效率。

更为重要的是Apifox 能够 Mock 数据,其集成了 Mock.js 库,允许你自定义规则,并且可以编写脚本,强大的 Mock 功能可以让前端开发人员不再苦苦等待后端提供接口,自己就能提前造各种各样的数据出来,可视化操作让你点点鼠标就能生成可观的人性化数据。

Apifox 的 Mock 功能
Apifox 的 Mock 功能
Apifox 调试后端接口
Apifox 调试接口界面

总结

Axios 的响应拦截器是一个强大的工具,允许你在处理服务器响应前对其进行操作。本文介绍了全局拦截器和特定请求拦截器的写法,以及一个处理错误状态码的实际案例。通过合理使用响应拦截器,你可以更好地控制和管理你的网络请求,实现更好的用户体验。

知识扩展:


参考链接:

  • Axios 官方文档:https://axios-http.com/docs/intro