news 2026/3/17 9:38:03

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/3/14 1:36:53

Windows右键菜单终极优化指南:用ContextMenuManager告别菜单混乱

Windows右键菜单终极优化指南:用ContextMenuManager告别菜单混乱 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 还在为Windows右键菜单里那些永远用…

作者头像 李华
网站建设 2026/3/12 20:51:07

高效帧率优化方案:深度解析工具配置与性能提升

高效帧率优化方案:深度解析工具配置与性能提升 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 想要让游戏体验更加流畅丝滑吗?genshin-fps-unlock这款专业工具能够…

作者头像 李华
网站建设 2026/3/14 2:26:30

HiDream-I1震撼开源:引领图像生成技术进入全新时代

2025年4月7日,智象未来(HiDream.ai)正式向全球开发者发布了备受瞩目的开源文生图模型HiDream-I1。这款具备170亿参数规模的革命性模型,不仅实现了秒级高质量图像生成的突破,更在多项国际权威评测中刷新纪录,为AI视觉创作领域树立了…

作者头像 李华
网站建设 2026/3/13 17:46:35

基于大数据分析的活动报名笔记日记分享系统的设计与实现

文章目录 项目简介系统截图大数据系统开发流程主要运用技术介绍参考文献结论源码文档获取定制开发/同行可拿货,招校园代理 :文章底部获取博主联系方式! 项目简介 系统分析部分,从需求分析和可行性分析两个方面展开。需求分析明确了用户和管理…

作者头像 李华
网站建设 2026/3/13 3:15:49

Flink学习笔记:状态后端

我们继续来聊 Flink 容错相关的内容。前面在介绍 Checkpoint 和 Savepoint 时提到了 State 的稳定存储,那究竟如何存储以及存储在什么地方呢?相信通过读完本文之后,你会有答案。 State Backend 分类 在 Flink 中状态后端(State Ba…

作者头像 李华
网站建设 2026/3/14 20:32:06

Java 大视界 -- Java 大数据在智能教育自适应学习系统中的学习效果评估指标体系构建与应用

Java 大视界 -- Java 大数据在智能教育自适应学习系统中的学习效果评估指标体系构建与应用引言:正文:一、智能教育评估的核心挑战与需求1.1 传统评估与智能评估对比1.2 智能评估的核心技术需求二、Java 驱动的智能评估技术架构设计2.1 七层技术架构全景解…

作者头像 李华