【Vue】Vue中对axios进行封装的最佳实践
CrazyPanda发表于:2024-04-29 23:50:06浏览:318次
vue是当前前端开发中最常用的框架之一,而ajax请求又是前端开发中非常关键的一环。为了方便开发者使用,vue社区中出现了许多对ajax请求库axios进行封装的实践。本文将介绍vue中对axios进行封装的最佳实践,帮助您更好地理解如何在vue项目中使用axios。
封装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拦截器中,我们处理了服务器响应异常和未授权的请求,以及对返回数据的处理。
对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请求时直接调用对应的方法即可。
在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请求,最终将结果展示在页面中。
结语
本文介绍了在Vue中对axios进行封装的最佳实践,这些实践在提高开发效率、降低代码重复等方面都有很好的作用。对于那些刚接触Vue的开发者来说,这些技巧能够轻松学习和理解,在实际开发中也能够发挥更大的作用。
猜你喜欢
- 【VUE】Vue3 实现文件预览 Word Excel pdf 图片 视频等格式 大全!!!!
- 先上效果图 插件安装先说 word 文件是docx-preview插件 excel文件是用 xlsx 插件 介绍后端返回的数据因为在拦截器处 做了对数据的处理 最后你调接口拿到的数据是 一个对象 里面包含:url : blob对象转换的用于访问Blob数据的临时链接。这个链接可以被用于在网页中展示二进制数据,比如显示图像或者播放音视频文件blobs:&
- 【Vue】vue3比vue2好在哪里
- vue 3 优于 vue 2 的关键优势包括:性能提升:响应式系统重写,优化更新速度虚拟 dom 优化,提高渲染效率代码组织和可维护性:组合式 api,提升可维护性teleport 和 suspense,提高代码灵活性和可读性开发者体验:更好的调试工具,简化调试过程typescript 2.7 支持,增强代码提示和类型检查Vue 3 与 Vue 2 的优势对比核心性能提升响应式系统重写:Vue 3 引入 Reactivity API,优化了响应式系统的性能,提升了更新速度。虚拟 DOM 优化:采
- 【Vue】Vue中的组件生命周期以及应用场景介绍
- vue是一款流行的javascript框架,它以其简化开发过程和高度可扩展性而闻名。vue的核心理念之一就是组件化,使得我们可以将应用程序拆解成一系列独立、可复用的组件。每个组件都有一个生命周期,它定义了组件被创建、被使用、被销毁的各个阶段。这个生命周期可以帮助我们更好地理解组件的工作原理,并在应用程序中使用不同的生命周期钩子完成特定的任务。在本文中,我们将详细介绍vue中的组件生命周期,以及如何应用生命周期钩子函数。组件生命周期在Vue中,组件有三个周期阶段:初始化阶段、运行阶段和销毁阶段。每
- 【Vue】vue是什么模式的前端框架
- vue 中的 mvvm 架构将应用程序分为 model、view 和 viewmodel:model:包含数据和业务逻辑,独立于视图。view:显示 model 中的数据,使用模板语法进行数据绑定。viewmodel:model 和 view 之间的桥梁,包含与 view 交互的数据和方法,并更新 view。mvvm 在 vue 中的优势包括响应式数据绑定、代码可重用性、提高生产力、易于调试。Vue:MVVM 架构什么是 MVVM?MVVM(Model-View-ViewModel)是一种软件设
- 【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
- 【Vue】Vue中对axios进行封装的最佳实践
- vue是当前前端开发中最常用的框架之一,而ajax请求又是前端开发中非常关键的一环。为了方便开发者使用,vue社区中出现了许多对ajax请求库axios进行封装的实践。本文将介绍vue中对axios进行封装的最佳实践,帮助您更好地理解如何在vue项目中使用axios。封装axios在Vue项目中,我们需要把axios进行封装以方便使用。这里介绍一个标准的axios封装:import axios from 'axios' import sto
- 【Vue】如何在 Vue 中直接引入 JS 文件
- 直接在 Vue 组件中引入外部 JS 文件有以下步骤:1. 在 <script> 标签中引入 JS 文件</script><script> // 直接导入 JS 文件 import myModule from '@/path/to/myModule.js'; // 使用导入的模块 console.log(myModule.someFunction()); </scri
- 【Vue】vue.js怎么定义一个组件
- vue.js 中定义组件有三种方法:直接定义在 <script> 标签中并导出组件对象、使用组件工厂函数和 definecomponent 辅助函数创建、使用类定义组件并继承 vue.extend 创建。</script>如何在 Vue.js 中定义组件一、直接定义1. 在 <script></script> 标签中,使用 export default {} 导出组件对象:<code class="html"&g
栏目分类全部>