news 2026/10/18 7:53:51

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/10/17 22:50:24

VSCode与Azure QDK联合调试深度解析,解锁量子编程高阶能力

第一章:VSCode Azure QDK 的量子编程调试在使用 Visual Studio Code 配合 Azure Quantum Development Kit(QDK)进行量子程序开发时,调试是确保算法逻辑正确性的关键环节。通过集成开发环境提供的断点、变量监视和逐步执行功能&…

作者头像 李华
网站建设 2026/10/18 13:10:12

2025企业微信私域必开功能:会话存档的价值与实操指南

2025企业微信私域核心:会话存档开通指南与实战价值2025年,企业微信私域运营中,会话存档是必须开通的功能。它不仅是企业监管合规和客户服务质量的保障,还是AI知识库、群聊智能问答等功能的使用前提。本文会从会话存档的概念、核心…

作者头像 李华
网站建设 2026/10/17 19:10:37

基于大数据的校园网用户行为分析系统的设计与实现

文章目录项目简介系统截图大数据系统开发流程主要运用技术介绍参考文献结论源码文档获取定制开发/同行可拿货,招校园代理 :文章底部获取博主联系方式!项目简介 Python版本:python3.7 前端:vue.jselementui 框架:djang…

作者头像 李华
网站建设 2026/10/17 22:37:52

VSCode调试量子神经网络的7个致命陷阱,第5个连资深工程师都中招

第一章:量子机器学习的 VSCode 调试在开发量子机器学习应用时,调试是确保算法逻辑正确性和性能优化的关键环节。Visual Studio Code(VSCode)凭借其强大的扩展生态和灵活的调试配置,成为该领域开发者首选的集成开发环境…

作者头像 李华
网站建设 2026/10/18 17:50:59

9 个课堂汇报 AI 工具,本科生高效写作推荐

9 个课堂汇报 AI 工具,本科生高效写作推荐 当论文写作成为一场与时间的赛跑 对于大多数本科生来说,课堂汇报不仅是学业的一部分,更是展示学习成果的重要机会。然而,面对繁重的课程任务和紧迫的截止日期,许多同学常常…

作者头像 李华
网站建设 2026/10/18 12:25:26

Wan2.2-T2V-A14B能否生成机场航班信息指引动画?公共信息服务升级

Wan2.2-T2V-A14B能否生成机场航班信息指引动画?公共信息服务升级 在大型国际机场的候机大厅里,一块块电子屏滚动播放着密密麻麻的航班信息:航班号、登机口、延误状态……这些内容对旅客而言至关重要,但呈现方式却几十年如一——冰…

作者头像 李华