您的当前位置:首页>全部文章>文章详情

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

CrazyPanda发表于:2024-04-29 23:50:06浏览:318次TAG:

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】Vue3 实现文件预览 Word Excel pdf 图片 视频等格式 大全!!!!
先上效果图  插件安装先说 word 文件是docx-preview插件          excel文件是用 xlsx 插件    介绍后端返回的数据因为在拦截器处 做了对数据的处理 最后你调接口拿到的数据是 一个对象 里面包含:url : blob对象转换的用于访问Blob数据的临时链接。这个链接可以被用于在网页中展示二进制数据,比如显示图像或者播放音视频文件blobs:&
发表于:2023-12-28 浏览:314 TAG:
【Vue】vue3比vue2好在哪里
vue 3 优于 vue 2 的关键优势包括:性能提升:响应式系统重写,优化更新速度虚拟 dom 优化,提高渲染效率代码组织和可维护性:组合式 api,提升可维护性teleport 和 suspense,提高代码灵活性和可读性开发者体验:更好的调试工具,简化调试过程typescript 2.7 支持,增强代码提示和类型检查Vue 3 与 Vue 2 的优势对比核心性能提升响应式系统重写:Vue 3 引入 Reactivity API,优化了响应式系统的性能,提升了更新速度。虚拟 DOM 优化:采
发表于:2024-04-28 浏览:322 TAG:
【Vue】Vue中的组件生命周期以及应用场景介绍
vue是一款流行的javascript框架,它以其简化开发过程和高度可扩展性而闻名。vue的核心理念之一就是组件化,使得我们可以将应用程序拆解成一系列独立、可复用的组件。每个组件都有一个生命周期,它定义了组件被创建、被使用、被销毁的各个阶段。这个生命周期可以帮助我们更好地理解组件的工作原理,并在应用程序中使用不同的生命周期钩子完成特定的任务。在本文中,我们将详细介绍vue中的组件生命周期,以及如何应用生命周期钩子函数。组件生命周期在Vue中,组件有三个周期阶段:初始化阶段、运行阶段和销毁阶段。每
发表于:2024-04-29 浏览:319 TAG:
【Vue】vue是什么模式的前端框架
vue 中的 mvvm 架构将应用程序分为 model、view 和 viewmodel:model:包含数据和业务逻辑,独立于视图。view:显示 model 中的数据,使用模板语法进行数据绑定。viewmodel:model 和 view 之间的桥梁,包含与 view 交互的数据和方法,并更新 view。mvvm 在 vue 中的优势包括响应式数据绑定、代码可重用性、提高生产力、易于调试。Vue:MVVM 架构什么是 MVVM?MVVM(Model-View-ViewModel)是一种软件设
发表于:2024-04-28 浏览:309 TAG:
【Vue】vue怎么转换时间格式
在 Vue.js 中,使用过滤器是一种转换时间格式的便捷方式。以下是如何完成此操作:使用 moment.js 库:安装 moment.js 库:npm install --save moment在 Vue 组件中导入 moment.js:import moment from 'moment'使用 moment.js 的 format 方法转换时间格式:const formattedTime = moment(timestamp).format(&#3
发表于:2024-05-19 浏览:285 TAG:
【Vue】Vue中对axios进行封装的最佳实践
vue是当前前端开发中最常用的框架之一,而ajax请求又是前端开发中非常关键的一环。为了方便开发者使用,vue社区中出现了许多对ajax请求库axios进行封装的实践。本文将介绍vue中对axios进行封装的最佳实践,帮助您更好地理解如何在vue项目中使用axios。封装axios在Vue项目中,我们需要把axios进行封装以方便使用。这里介绍一个标准的axios封装:import axios from 'axios' import sto
发表于:2024-04-29 浏览:321 TAG:
【Vue】如何在 Vue 中直接引入 JS 文件
直接在 Vue 组件中引入外部 JS 文件有以下步骤:1. 在 <script> 标签中引入 JS 文件</script><script> // 直接导入 JS 文件 import myModule from '@/path/to/myModule.js'; // 使用导入的模块 console.log(myModule.someFunction()); </scri
发表于:2024-05-19 浏览:238 TAG:
【Vue】vue.js怎么定义一个组件
vue.js 中定义组件有三种方法:直接定义在 <script> 标签中并导出组件对象、使用组件工厂函数和 definecomponent 辅助函数创建、使用类定义组件并继承 vue.extend 创建。</script>如何在 Vue.js 中定义组件一、直接定义1. 在 <script></script> 标签中,使用 export default {} 导出组件对象:<code class="html"&g
发表于:2024-04-21 浏览:244 TAG:
【Vue】vue使用后端提供的接口
在 vue 中使用后端接口可通过以下步骤实现:安装 axios 库并导入。使用 axios 对象创建 http 请求,如 get 或 post。使用 data 选项传递数据。处理响应,使用 data 属性访问后端返回的数据。使用 vuex 管理从后端获取的数据,通过组件访问。在 Vue 中使用后端接口在 Vue.js 应用中使用后端提供的接口可以让你与服务器通信,获取和更新数据。本文将介绍如何在 Vue 中使用后端接口。1. 安装 Axios首先,你需要安装 Axios 库,这是一个用于发起 H
发表于:2024-04-18 浏览:301 TAG:
【Vue】Antd Pro Vue的使用(十) —— a-form表单赋值
在Ant Design Pro Vue中,为表单赋值通常涉及到两个方面:一是使用v-model进行双向绑定,二是直接通过this.form.setFieldsValue()方法设置表单字段的值。以下是一个简单的例子,展示如何为Ant Design Pro Vue中的表单赋值:首先,确保你已经在组件中引入了a-form-model和相关的表单字段组件比如a-form-model-item和a-input。在data函数中定义一个form对象,它包含了你想要绑定的表单字段。使用v-model指令将输
发表于:2024-05-10 浏览:308 TAG: