返回

Axios拦截器的封装,助你打造更优雅的代码!

前端

随着前端开发的日益复杂,Vue.js已成为构建单页面应用程序的首选框架之一,而Axios库则成为Vue.js中处理HTTP请求的首选工具。Axios库的强大之处在于其简洁、易用,同时提供了一系列强大的功能,其中之一就是拦截器。

拦截器允许我们为请求和响应设置拦截函数,从而实现对请求和响应的统一处理和管理。下面,我们将详细介绍如何封装Axios拦截器,以帮助您打造更优雅的代码。

一、请求拦截器

请求拦截器允许我们在每个请求发出之前执行某些操作,如添加token、设置请求头等。以下是请求拦截器的封装示例:

import axios from 'axios'

// 创建axios实例
const instance = axios.create()

// 请求拦截器
instance.interceptors.request.use((config) => {
  // 在每个请求头中添加token
  config.headers['Authorization'] = 'Bearer ' + localStorage.getItem('token')
  return config
}, (error) => {
  // 处理请求错误
  return Promise.reject(error)
})

在上面的示例中,我们首先创建了一个axios实例,然后设置了一个请求拦截器。在拦截器函数中,我们从本地存储中获取token,并将其添加到每个请求头的Authorization字段中。这样,在每次发送请求时,token都会自动包含在请求头中,无需我们在每个请求中手动添加。

二、响应拦截器

响应拦截器允许我们在收到响应后执行某些操作,如判断状态码、提取数据等。以下是响应拦截器的封装示例:

// 响应拦截器
instance.interceptors.response.use((response) => {
  // 根据状态码判断登录状态
  if (response.status === 401) {
    // 重定向到登录页面
    window.location.href = '/login'
  }
  // 提取数据
  return response.data
}, (error) => {
  // 处理响应错误
  return Promise.reject(error)
})

在上面的示例中,我们设置了一个响应拦截器。在拦截器函数中,我们首先判断响应的状态码,如果状态码为401,则说明用户未登录,此时我们会重定向到登录页面。如果状态码不为401,则我们会提取响应的数据并返回。

三、优势

封装Axios拦截器具有以下优势:

  1. 统一管理请求和响应的处理逻辑,维护和修改更加便捷。
  2. 提高代码的可重用性,可以轻松地将拦截器应用到多个项目中。
  3. 增强代码的可读性和可维护性,使代码更加简洁优雅。

四、总结

Axios拦截器的封装可以帮助您打造更优雅的代码,提高开发效率。本文详细介绍了请求拦截器和响应拦截器的封装示例及其优势。希望对您有所帮助。