Vue.js SPA 项目中 axios 拦截器原理及应用详解

阅读时长 3 分钟读完

前言

在 Vue.js 的单页应用 (SPA) 项目中,我们通常会使用 axios 进行网络请求。axios 是一个基于 Promise 的 HTTP 客户端,可以在浏览器和 Node.js 中使用。axios 的拦截器 (interceptor) 功能可以在请求或响应被 then 或 catch 处理之前对它们进行拦截和处理。本文将详细介绍 axios 拦截器的原理和应用,并提供示例代码。

拦截器原理

axios 拦截器分为请求拦截器和响应拦截器。请求拦截器会在发送请求之前拦截请求并对请求进行处理,而响应拦截器会在接收到响应之后拦截响应并对响应进行处理。axios 拦截器的原理是通过链式调用来实现的,即将请求拦截器和响应拦截器放在一个数组中,然后按照数组中的顺序依次执行。

请求拦截器的执行顺序是先添加的先执行,而响应拦截器的执行顺序是后添加的先执行。如果请求拦截器中发生了错误,则不会执行后面的请求拦截器和请求,直接跳转到错误处理流程。同样,如果响应拦截器中发生了错误,则不会执行后面的响应拦截器和 then/catch,直接跳转到错误处理流程。

拦截器应用

请求拦截器

请求拦截器可以用来添加公共请求头、添加请求参数、对请求进行加密等操作。示例代码如下:

-- -------------------- ---- -------
------ ----- ---- --------

-- -------
-------------------------------
  ------ -- -
    -- -----------
    ---------------------------- - ------- - - ------------------------------
    ------ -------
  --
  ----- -- -
    -- ---------
    ------ ----------------------
  -
--

上面的代码中,我们在请求拦截器中添加了一个名为 Authorization 的请求头,其值为从本地存储中获取的 token。这样,在每次发送请求时都会自动带上这个请求头。

响应拦截器

响应拦截器可以用来对响应进行处理,比如对返回的数据进行解密、对响应进行统一处理等。示例代码如下:

-- -------------------- ---- -------
------ ----- ---- --------

-- -------
--------------------------------
  -------- -- -
    -- ---------
    -- ------------------- --- -- -
      ------ ---------------------
    - ---- -
      ------ ----------------------------------
    -
  --
  ----- -- -
    -- ---------
    ------ ----------------------
  -
--

上面的代码中,我们在响应拦截器中对返回的数据进行了统一处理。如果返回数据中的 code 字段为 0,则返回 result 字段;否则,直接抛出错误信息。

总结

axios 拦截器是 Vue.js SPA 项目中常用的功能之一,可以用来对请求和响应进行拦截和处理。本文介绍了拦截器的原理和应用,并提供了示例代码。在实际开发中,我们可以根据需要自定义拦截器来满足不同的需求。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6514e79395b1f8cacdd4802b

纠错
反馈