技术文摘
Vue3 中 axios 的封装方法
Vue3 中 axios 的封装方法
在 Vue3 项目开发中,合理封装 axios 能够极大地提升代码的可维护性与复用性。接下来,我们就详细探讨一下 Vue3 中 axios 的封装方法。
要确保项目中已经安装了 axios。可以通过 npm 或 yarn 进行安装,例如:npm install axios。安装完成后,就可以开始封装工作。
创建一个专门用于封装 axios 的文件,通常命名为 axios.js 或 http.js。在这个文件中,先引入 axios 库。
import axios from 'axios'
接下来,创建一个 axios 实例。可以对实例进行一些全局配置,比如设置基础 URL、超时时间等。
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API, // 基础 URL
timeout: 5000 // 超时时间
})
这里的 process.env.VUE_APP_BASE_API 可以在项目的环境变量文件中进行配置,方便在不同环境下切换 API 地址。
为了更好地处理请求和响应,我们可以使用拦截器。请求拦截器可以在请求发送前进行一些操作,例如添加 token 到请求头。
service.interceptors.request.use(
config => {
const token = localStorage.getItem('token')
if (token) {
config.headers['Authorization'] = `Bearer ${token}`
}
return config
},
error => {
return Promise.reject(error)
}
)
响应拦截器则用于处理服务器返回的响应。可以在这里进行统一的错误处理、数据格式化等操作。
service.interceptors.response.use(
response => {
const res = response.data
if (res.code!== 200) {
console.error('请求出错:', res.message)
return Promise.reject(new Error(res.message || 'Error'))
} else {
return res
}
},
error => {
console.error('网络错误:', error)
return Promise.reject(error)
}
)
最后,将封装好的 axios 实例导出,以便在组件中使用。
export default service
在 Vue3 组件中使用封装好的 axios 也很简单。首先引入封装的 axios 实例,然后就可以像平时使用 axios 一样发起请求。
<template>
<div>
<button @click="fetchData">获取数据</button>
</div>
</template>
<script setup>
import http from '@/utils/http'
const fetchData = async () => {
try {
const response = await http.get('/api/data')
console.log(response)
} catch (error) {
console.error(error)
}
}
</script>
通过以上步骤,我们在 Vue3 中成功地完成了 axios 的封装,使得项目中的 API 请求更加规范、易于管理。
TAGS: Vue3 axios 封装方法 vue3与axios结合
- CSS制作方形径向透明背景的方法
- VueJS中使用this关键字导出默认值的原因
- CSS初始化:为何要把所有元素边距和内边距设为零
- jQuery 循环赋值 span 标签后页面刷新数据消失的原因
- 弹性盒子布局居中难题的解决方法
- 探秘内嵌 CSS 的空标签:样式规则应用之谜
- 线上环境中 Nginx 代理该如何使用
- 双击子元素时避免触发父元素双击事件的方法
- Vue.js与Element Plus中,子组件$emit失效原因探究
- 怎样防止子元素双击事件对父元素双击事件产生影响
- 手机端 CSS border-image 不兼容问题的解决方法
- overflow: hidden 致使 inline-block 元素错位显示的原因是什么
- CSS object-fit:cover 如何精确指定裁剪位置
- 如何实现 Vue 应用的即时通讯功能
- 小说网站控制台现乱码但页面正常显示,原因何在