news 2026/7/31 12:20:17

Vue项目中Axios封装实战指南(兼容Vue2/Vue3)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue项目中Axios封装实战指南(兼容Vue2/Vue3)

前言:在Vue项目开发中,Axios是最常用的HTTP请求库,但直接在组件中零散使用会导致代码冗余、错误处理不一致等问题。本文带来一套工业级Axios封装方案,涵盖请求/响应拦截、环境隔离、API统一管理、错误分类处理等核心功能,同时适配Vue2和Vue3,新手也能直接套用!

一、前置准备:安装Axios

首先确保项目中已安装Axios依赖,若未安装执行以下命令:

npm install axios --save # 或使用yarn(推荐) yarn add axios

提示:若项目使用Element UI/Plus作为UI组件库,建议同步安装(用于后续错误提示),Vue2安装Element UI,Vue3安装Element Plus。

提示:若项目使用Element UI/Plus作为UI组件库,建议同步安装(用于后续错误提示),Vue2安装Element UI,Vue3安装Element Plus。

二、核心封装:创建request.js工具类

src/utils/目录下新建request.js文件,这是Axios封装的核心文件,包含实例创建、拦截器配置、通用请求方法封装等功能。

2.1 完整封装代码(Vue3+Element Plus版本)

import axios from 'axios' // 引入UI组件库的提示组件(用于错误/成功提示) import { ElMessage, ElMessageBox } from 'element-plus' // Vue3状态管理:Pinia(Vue2替换为Vuex) import { useUserStore } from '@/stores/user' // 引入路由实例(用于Token过期跳转登录页) import router from '@/router' /** * 1. 创建Axios实例 * 核心作用:统一配置基础请求地址、超时时间、默认请求头 */ const service = axios.create({ // 基础请求地址(从环境变量中获取,实现环境隔离) baseURL: import.meta.env.VITE_API_BASE_URL, timeout: 10000, // 请求超时时间:10秒 headers: { 'Content-Type': 'application/json;charset=utf-8' // 默认请求头:JSON格式 } }) /** * 2. 请求拦截器:请求发送前的统一处理 * 核心功能:添加Token、过滤无效参数、防止重复请求(可选) */ service.interceptors.request.use( (config) => { // 2.1 给请求头添加Token(后端约定字段,通常为Authorization) const userStore = useUserStore() if (userStore.token) { // 格式:Bearer + Token(后端若有其他格式可调整) config.headers.Authorization = `Bearer ${userStore.token}` } // 2.2 处理GET请求参数:过滤空值(可选,根据业务需求) if (config.method === 'get' && config.params) { config.params = Object.fromEntries( Object.entries(config.params).filter(([_, value]) => { // 过滤 undefined、null、空字符串 return value !== undefined && value !== null && value !== '' }) ) } return config }, (error) => { // 请求拦截器错误:如参数格式错误、网络未连接等 console.error('请求拦截器异常:', error) ElMessage.error('请求初始化失败,请检查网络或参数') return Promise.reject(error) } ) /** * 3. 响应拦截器:请求返回后的统一处理 * 核心功能:统一解析响应数据、错误码处理、Token
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 11:03:46

AI语音变声技术终极指南:从零开始掌握实时声音转换的秘诀

AI语音变声技术终极指南:从零开始掌握实时声音转换的秘诀 【免费下载链接】voice-changer リアルタイムボイスチェンジャー Realtime Voice Changer 项目地址: https://gitcode.com/gh_mirrors/vo/voice-changer 想要在直播中变身心仪角色,或在游…

作者头像 李华
网站建设 2026/7/31 10:00:06

Wan2.2-T2V-A14B在非遗文化传承纪录片中的创造性转化

Wan2.2-T2V-A14B在非遗文化传承纪录片中的创造性转化 在贵州深山的苗寨里,一位老匠人正用铁锤敲打一块烧红的银坯,火星四溅,银片逐渐延展成凤凰的模样。这样的画面如果出现在纪录片中,观众会为之动容——但现实中,许多…

作者头像 李华
网站建设 2026/7/30 22:03:11

商标名称里面有这类词,会影响通过!

今天合作的同行发过来一个名称,让普推知产商标老杨看下通过如何,名称是“玄武某某”四个字,整体搜索没有相同也没有高度近似,但是再仔细分析下去,通过率就不怎么高。“玄武”区,江苏省南京市辖区&#xff0…

作者头像 李华
网站建设 2026/7/31 3:21:05

用户运营必备AI工具榜:年终PPT自动生成效果对比

年终总结大作战,这些工具谁能称王?每到年终,用户运营小伙伴们就开始发愁年终总结PPT。熬夜改报告是常有的事,好不容易动手写了,框架却怎么都搭不好,内容东一榔头西一棒子。好不容易内容有了,这设…

作者头像 李华
网站建设 2026/7/29 17:16:20

论文分享|抛弃路由,轻装上阵:一种无需路由的高效胶囊网络设计

一、整体分析 该论文提出了一种创新的胶囊网络设计,挑战了传统胶囊网络必须依赖复杂路由机制的共识。通过使用同质向量胶囊(Homogeneous Vector Capsules, HVCs) 替代传统胶囊间的矩阵乘法,并结合多分支卷积结构,作者…

作者头像 李华