news 2026/4/3 0:12:34

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/31 2:26:05

League Akari:智能游戏助手的革命性突破

League Akari:智能游戏助手的革命性突破 【免费下载链接】LeagueAkari ✨兴趣使然的,功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari 在当今快节奏的英雄联盟…

作者头像 李华
网站建设 2026/3/27 18:25:20

Balena Etcher完整指南:从零掌握镜像烧录核心技术

Balena Etcher完整指南:从零掌握镜像烧录核心技术 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher Balena Etcher作为一款革命性的开源镜像烧录工具&a…

作者头像 李华
网站建设 2026/4/2 18:36:26

ParsecVDisplay虚拟显示驱动:如何轻松实现4K 240Hz终极显示体验

ParsecVDisplay虚拟显示驱动:如何轻松实现4K 240Hz终极显示体验 【免费下载链接】parsec-vdd ✨ Virtual super display, upto 4K 2160p240hz 😎 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd ParsecVDisplay是一款基于Parsec虚拟显示…

作者头像 李华
网站建设 2026/3/14 19:33:01

C#用API添另静态路由表

只要能输出 row.Metric 的有效数值,就证明 C# 的 API 定义和调用逻辑都是正确的你的 C# 代码中 [DllImport("Iphlpapi.dll")] private static extern int GetIpInterfaceEntry(ref MIB_IPINTERFACE_ROW row); 这个定义完全正确,没有任何错误 —…

作者头像 李华
网站建设 2026/3/26 16:13:16

VBA-JSON终极指南:5分钟掌握Office JSON数据处理

VBA-JSON终极指南:5分钟掌握Office JSON数据处理 【免费下载链接】VBA-JSON 项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON 在现代办公自动化中,JSON数据处理已成为VBA开发者的必备技能。VBA-JSON作为专为Office环境设计的JSON解析工具…

作者头像 李华
网站建设 2026/3/28 12:08:47

腾讯混元1.8B开源:轻量化大模型开启边缘智能新纪元

腾讯混元1.8B开源:轻量化大模型开启边缘智能新纪元 【免费下载链接】Hunyuan-1.8B-Pretrain 腾讯开源混元大语言模型系列中的高效预训练模型,具备1.8B参数规模,支持256K超长上下文与混合推理模式,适配从边缘设备到高并发服务器的广…

作者头像 李华