Vue中axios的封装(报错、鉴权、跳转、拦截、提示)

下面是“Vue中axios的封装(报错、鉴权、跳转、拦截、提示)”的完整攻略:

一、为什么要封装Axios

在Vue项目开发中,我们经常会使用Ajax技术来请求后端数据,而Axios作为当前最流行的Ajax库之一,其简单易用,能够请求RESTful API并支持Promise API等特性,因此备受青睐。然而,为了提高代码的可读性和复用性,我们需要对Axios进行封装,以方便查询、修改和维护。

二、Axios封装

首先,在src目录下新建一个api目录,用于存放所有与后端交互的文件。

然后,我们在api目录中新建一个request.js文件,该文件用于封装Axios:

// 引入axios库
import axios from 'axios'

// 创建请求对象实例
const service = axios.create({
  baseURL: process.env.BASE_API,
  timeout: 5000 // 请求超时时间
})

// request拦截器
service.interceptors.request.use(
  config => {
    // 如果有token,就携带token
    if (localStorage.token) {
      config.headers['Authorization'] = 'Bearer ' + localStorage.token
    }
    return config
  },
  error => {
    Promise.reject(error)
  }
)

// response拦截器
service.interceptors.response.use(
  response => {
    return response.data
  },
  error => {
    if (error.response) {
      switch (error.response.status) {
        case 401: // 未登录
          router.replace({
            path: '/login',
            query: {redirect: router.currentRoute.fullPath}
          })
          break
        case 403: // token过期
          localStorage.removeItem('token')
          router.replace({
            path: '/login',
            query: {redirect: router.currentRoute.fullPath}
          })
          break
        case 404: // 未找到
          break
        case 500: // 服务器错误
          break
      }
    }
    return Promise.reject(error.response.data)
  }
)

export default service

这段代码对Axios进行了封装,具体内容如下:

  1. 创建了一个名为service的请求对象;
  2. 对请求进行了基础的配置:设置了请求的基础url,设置了请求的超时时间;
  3. 对请求进行了拦截:设置了request拦截器、response拦截器;
  4. 对response拦截器进行了两项主要操作:处理请求成功的response数据,处理请求失败的error数据。

三、示例说明

下面我们来看两个例子,详细说明如何利用上述封装后的Axios进行后端数据交互。

1. GET请求

import request from '@/api/request.js'

export function getData(params) {
  return request({
    url: '/api/data',
    method: 'get',
    params: params
  })
}

在上述代码中,我们引入了封装后的request.js文件,然后通过getData(params)函数发起get请求。在函数中,我们需要传入一个params参数对象,用于传递get请求的参数(例如页码、每页条数等)。

2. POST请求

import request from '@/api/request.js'

export function login(data) {
  return request({
    url: '/api/login',
    method: 'post',
    data: data
  })
}

在上述代码中,我们同样引入了封装后的request.js文件,然后通过login(data)函数发起post请求。在函数中,我们需要传入一个data参数对象,用于传递post请求的参数(例如用户名、密码等)。

四、总结

通过对Axios的封装,我们可以提高代码的可维护性和可复用性,让我们的项目开发更加高效。同时,我们也可以通过以上两个示例,更好地理解如何在Vue项目中使用封装后的Axios进行后端数据交互。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue中axios的封装(报错、鉴权、跳转、拦截、提示) - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Fiddler出现tunnel to 443无法抓包怎么解决?fiddler抓包出现443的解决方法

    以下是“Fiddler出现tunnelto443无法抓包怎么解决?fiddler抓包出现443的解决方法”的攻略,其中包含两个示例: Fiddler出现tunnelto443无法抓包怎么解决 什么是Fiddler? Fiddler是一款免费的Web调试工具,可以用于HTTP/HTTPS协议的抓包、调和分析。 为什么会出现tto443无法抓包? 当我们使用Fi…

    http 2023年5月13日
    00
  • HTTP头部信息有哪些?

    HTTP头部信息是HTTP协议中的一部分,包含了对请求或响应的描述和信息。它是由一些由冒号分隔的名值对组成的,包含了一些标准的属性和一些特定的定制属性。HTTP头部信息中的属性可以提供有关消息体内容、客户端、服务器、缓存、安全性等方面的信息。 常用的HTTP头部信息包括: Accept:指定客户端可以处理的响应内容类型。 示例: Accept: text/h…

    Http网络协议 2023年4月20日
    00
  • HTTPS比HTTP更安全吗?

    请看下面的详细攻略。 HTTPS比HTTP更安全吗? 什么是HTTP和HTTPS? HTTP(Hypertext Transfer Protocol)是一种基于TCP/IP协议的应用层协议,用于在客户端和服务器之间传输数据,是现在互联网中最为广泛使用的协议。但HTTP协议有一个很大的弱点,就是传输的数据都是明文,容易被黑客窃取和篡改。 为了解决HTTP协议的…

    云计算 2023年4月27日
    00
  • springboot如何设置请求参数长度和文件大小限制

    以下是关于“Springboot如何设置请求参数长度和文件大小限制”的完整攻略: 问题描述 在使用Springboot时,有时需要限制请求参数长度和文件大小。本文将介绍如何设置请求参数长度和文件大小限制。 解决步骤 以下是设置请求参数长度和文件大小限制的步骤: 步骤一:了解问题 首先,需要了解这个问题的原因。这个问题通常是由于安全性和性方面的考虑,需要限制请…

    http 2023年5月13日
    00
  • 微服务Springcloud之Feign的基本使用

    以下是关于“微服务Springcloud之Feign的基本使用”的完整攻略: 问题描述 在微服务架构中,服务之间的调用是非常频繁的。Feign是一种基于HTTP的轻量级ful服务客户端,可以帮助我们更方便地进行服务之间的调用。本文将介绍Feign的基本使用方法。 解 方法一:添加Feign依赖 在使用Feign之前,需要在pom.xml文件中添加Feign依…

    http 2023年5月13日
    00
  • 关于vue3.0使用axios报错问题

    针对“关于vue3.0使用axios报错问题”的解决方案,可以按照以下步骤来实现。 问题描述 在使用Vue3.0进行项目开发时,如果使用axios进行网络请求,可能会遇到报错问题。具体报错信息可以包括但不限于以下内容: Uncaught TypeError: Cannot read property ‘get’ of undefined TypeError:…

    http 2023年5月13日
    00
  • 什么是HTTP协议?

    HTTP协议是超文本传输协议(Hypertext Transfer Protocol)的缩写,是一种用于传输各种数据和文件的协议,也是互联网上应用最为广泛的协议之一。 HTTP协议采用客户端-服务器模式,客户端发起请求,服务器返回响应。HTTP协议基于TCP协议来传输数据,TCP协议利用三次握手建立连接,保证数据传输的可靠性。传输内容可以是各种格式的数据,包…

    Http网络协议 2023年4月20日
    00
  • FastCGI Error Number: 193 (0x800700c1)解决方法

    以下是关于“FastCGIErrorNumber:193(0x800700c1)解决方法”的完整攻略: 问题描述 在使用FastCGI时,有时会遇到FastCGIErrorNumber:193(0x800700c1)的错误。本文将介绍如何解决这个问题。 解决步骤 以下是解决FastCGIErrorNumber:193(0x800700c1)的步骤: 步骤一:…

    http 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部