【Vue】Vue中对axios进行封装的最佳实践

CrazyPanda3周前Vue42

vue是当前前端开发中最常用的框架之一,而ajax请求又是前端开发中非常关键的一环。为了方便开发者使用,vue社区中出现了许多对ajax请求库axios进行封装的实践。本文将介绍vue中对axios进行封装的最佳实践,帮助您更好地理解如何在vue项目中使用axios。

  1. 封装axios

在Vue项目中,我们需要把axios进行封装以方便使用。这里介绍一个标准的axios封装:

import axios from 'axios'
import store from '@/store'
import router from '@/router'
 
// 创建axios实例
const service = axios.create({
  timeout: 10000, // 请求超时时间
  baseURL: process.env.VUE_APP_BASE_API // api请求的baseURL
})
 
// request拦截器
service.interceptors.request.use(
  config => {
    // 发送请求前进行token鉴权
    if (store.getters.token) {
      config.headers['Authorization'] = 'Bearer ' + store.getters.token
    }
    return config
  },
  error => {
    console.log(error)
    Promise.reject(error)
  }
)
 
// response拦截器
service.interceptors.response.use(
  response => {
    const res = response.data
    if (res.code !== 20000) {
      // 抛出异常信息
      return Promise.reject(new Error(res.message || '错误'))
    } else {
      return res
    }
  },
  error => {
    console.log('err' + error)
    if (error.response.status === 401) {
      // 跳转到登录页
      router.push({ path: '/login' })
    }
    return Promise.reject(error)
  }
)
 
export default service

上述代码创建了一个axios实例,并对其进行了request和response拦截器的配置。在request拦截器中,我们可以通过store获取用户token,并将其添加到请求头中进行鉴权。在response拦截器中,我们处理了服务器响应异常和未授权的请求,以及对返回数据的处理。

  1. 对http请求进行封装

在使用axios时我们通常需要对http请求进行进一步的封装以便于进行统一管理。下面我们为各种http请求创建一个封装。

get请求:

import http from '@/utils/http'
 
export default {
    get(url, params) {
        return http.get(url, {
            params: params
        })
    }
}

post请求:

import http from '@/utils/http'
 
export default {
    post(url, data) {
        return http.post(url, data)
    }
}

delete请求:

import http from '@/utils/http'
 
export default {
    delete(url) {
        return http.delete(url)
    }
}

put请求:

import http from '@/utils/http'
 
export default {
    put(url, data) {
        return http.put(url, data)
    }
}

通过以上的封装,我们可以在使用http请求时直接调用对应的方法即可。

  1. 在Vue项目中使用

在Vue项目中使用封装的axios和http请求,需要进行以下操作:

首先,我们需要在main.js文件中引入axios和封装好的http请求:

import axios from 'axios'
import http from '@/utils/http'
 
Vue.prototype.$axios = axios
Vue.prototype.$http = http

其次,在组件中使用:

import api from '@/api/api'
 
export default {
  name: 'Demo',
  data() {
    return {
      dataList: []
    }
  },
  mounted() {
    this.getData()
  },
  methods: {
    getData() {
      let params = {
        // 请求参数
      }
      api.get('/data', params).then(res => {
        console.log(res)
        this.dataList = res.data
      })
    }
  }
}

这里我们将api封装的http请求引入,并在mounted生命周期中调用getData方法发起http请求,最终将结果展示在页面中。

  1. 结语

本文介绍了在Vue中对axios进行封装的最佳实践,这些实践在提高开发效率、降低代码重复等方面都有很好的作用。对于那些刚接触Vue的开发者来说,这些技巧能够轻松学习和理解,在实际开发中也能够发挥更大的作用。


标签: vue

相关文章

【Vue】vue通过class获取dom

vue通过class获取dom,其实就是操作 html 中的标签的一些能力  我们可以操作哪些内容  获取一个元素  移除一个元素  创建一个元素  向页面里面添加一个元素  给元素绑定一些事件  获...

【Vue】前端框架 Vue3框架 使用总结(一) Vue框架的基础使用

【Vue】前端框架 Vue3框架 使用总结(一) Vue框架的基础使用

目录一、Vue3框架基础1、创建项目2、项目结构3、Vue基础语法4、组件之间通信5、组合式api二、VueRouter的基础使用1、安装2、使用案例3、完整案例步骤4、调优-路由懒加载三、Vuex数...

【Vue】vue创建应用并运行

【Vue】vue创建应用并运行

简介Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的...

【Vue】Vue中字符串数组和对象常用方法介绍

在Vue中,数组和字符串是我们最常处理的数据类型。Vue提供了响应式系统,可以自动跟踪数组和对象的变化,并响应式地更新DOM。在Vue中,您可以像在任何JavaScript应用程序中一样操作这些数据类...

【Vue】vue3比vue2好在哪里

vue 3 优于 vue 2 的关键优势包括:性能提升:响应式系统重写,优化更新速度虚拟 dom 优化,提高渲染效率代码组织和可维护性:组合式 api,提升可维护性teleport 和 suspens...

【前端】前端实现文件下载自动打开预览的解决方法

问题:前端使用React开发,想要下载阿里云OSS存储的视频文件,使用了<a>标签,点击后就会在浏览器打开预览,具体原因这里不再多说,查找到了几个解决办法,在此记录一下。一、 下载文件的三...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。