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日

相关文章

  • HTTP的长连接和短连接是什么意思?

    HTTP是一种无状态协议,指的是每个请求与响应之间都是独立的,服务器不能依靠之前的请求上下文来处理客户端的请求。在HTTP中,通信双方分为客户端和服务器,客户端向服务器请求数据,服务器响应客户端请求并返回数据。而Long Connection也称持久连接,是指客户端与服务器端在一次TCP连接内可以发送和接收多个HTTP请求和响应。而短连接则是指每次请求和响应…

    Http网络协议 2023年4月20日
    00
  • 什么是HTTP重定向异常?

    HTTP重定向异常是指在浏览器向服务器发送请求时,服务器会返回一个重定向状态码,通知浏览器访问新的URL地址,但是该URL地址不符合预期,导致浏览器无法正确加载页面的异常情况。 常见的HTTP重定向状态码有301和302,其中301代表永久重定向,302代表临时重定向。这两种状态码的处理方式不同,对于网站的SEO和用户体验都会产生影响。如果服务器返回的重定向…

    云计算 2023年4月27日
    00
  • 如何解决HTTP连接超时问题?

    HTTP连接超时通常是由于网络延迟、服务器负载过高或者客户端请求过于耗时等原因导致,针对这种情况解决HTTP连接超时问题的攻略可以分为以下几个步骤: 1. 分析问题 首先,需要对HTTP连接超时问题进行分析,确定出现问题的具体原因。可以通过以下几种方式进行分析: 使用curl等工具对请求进行测试,查看错误提示信息以及响应时间,以确定连接超时是否是由于网络连接…

    云计算 2023年4月27日
    00
  • python后端开发工程师考证试题(小结)

    Python后端开发工程师考证攻略 1. 考试结构 Python后端开发工程师考试共分为两个部分:理论考试和编程实践考试。理论考试包括选择题和简答题,主要考察知识点的掌握程度;编程实践考试主要考察应试者的编程能力和解决问题的能力。 2. 基础知识准备 考试主要考察Python的基础知识和Web开发相关技术。建议考生掌握以下知识点: 2.1 Python基础知…

    http 2023年5月13日
    00
  • vue-router解决相同路径跳转报错的问题

    接下来我将为你详细解释如何使用Vue-Router解决相同路径跳转导致的报错问题。 在Vue-Router中,当我们从一个路由导航到另一个路由时,我们可能会在控制台上看到以下错误: Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to xxx 该错误通常意味着我…

    http 2023年5月13日
    00
  • 解决java启动时报线程占用报错:Exception in thread “Thread-14“ java.net.BindException: Address already in use: bind

    当Java应用程序启动时,可能会遇到“Exception in thread “Thread-14” java.net.BindException: Address already in use: bind”的错误。这个错误通常是由于端口已被占用而导致的。以下是解决这个问题的完整攻略: 解决方案 1. 查找占用端口进程 首先,需要找到占用端口的进程。可以使用…

    http 2023年5月13日
    00
  • 解决Android studio 3.6.1 出现Cause: unable to find valid certification path to requested target 报错的问题

    以下是关于“解决Androidstudio3.6.1出现Cause:unabletofindvalidcertificationpathtorequestedtarget报错的问题”的完整攻略: 简介 在使用Android Studio 3.6.1进行开发时,时会出现“Cause: unable to find valid certification pat…

    http 2023年5月13日
    00
  • HTTP Keep-Alive异常的原因是什么?

    HTTP Keep-Alive是一种HTTP协议的特性,它可以允许同一个TCP连接上进行多次请求-响应序列,以减少每个请求所需的时间以及减少每个请求所消耗的资源。但是,在实际应用中,有时会出现HTTP Keep-Alive异常的情况,会导致连接被关闭,从而影响Web页面的加载速度和用户体验。 可能导致HTTP Keep-Alive异常的原因有以下几个: 服务…

    云计算 2023年4月27日
    00
合作推广
合作推广
分享本页
返回顶部