前端新手必看:Axios二次封装超精华教程(附完整代码)
2026/8/2 4:28:21 网站建设 项目流程

目录

  • 一、为什么要封装?
  • 二、封装三步走
    • 1. 创建实例
    • 2. 添加拦截器
      • 请求拦截器 → 自动塞 Token
      • 响应拦截器 → 统一处理数据 + 错误
    • 3. 暴露 request
  • 三、封装前后对比

很多前端新手在项目中会遇到一个问题:每个接口文件里都要重复写baseURL、重复判断错误、重复手动塞 token……代码又臭又长。

这篇文章我会从零开始,带你理解 Axios 二次封装的每一个步骤,保证你看完就能在自己项目里用起来。

一、为什么要封装?

不封装的后果:

// 每个接口都要重复写这些... axios.get('/api/user', { headers: { Authorization: token } // 重复 }).catch(() => alert('报错')) // 重复

二次封装 axios 是为了统一规则,方便管理,例如公司规定:所有接口必须自动带 token、统一错误提示等。

封装后你只需要写:

request({ url: '/user', method: 'GET' }) // 完事!

二、封装三步走

1. 创建实例

根据 axios 的 create 方法创建 request 实例(我们就可以自己去配置一些请求基础信息啦,比如超时时间,基础路径)。

import axios from 'axios'; import { ElMessage } from "element-plus"; // 调用错误提示组件 let request = axios.create({ baseURL: import.meta.env.VITE_APP_BASE_API, timeout: 5000, });

2. 添加拦截器

请求拦截器 → 自动塞 Token
// 请求拦截器 request.interceptors.request.use((config) => { // 自动添加 token const token = localStorage.getItem('token'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; });
响应拦截器 → 统一处理数据 + 错误
// 响应拦截器 request.interceptors.response.use( (response) => { // 成功回调 // 简化回调的数据 return response.data; }, (error) => { // 失败回调 // 处理 http 网络错误 let msg = ''; // 储存错误信息 let status = error.response.status; switch (status) { case 401: msg = "token 过期"; break; case 403: msg = '无权访问'; break; case 404: msg = "请求地址错误"; break; case 500: msg = "服务器出现问题"; break; default: msg = "无网络"; } ElMessage({ type: 'error', message: msg }); return Promise.reject(error); // 不要让错误消失,要把错误继续传递给调用接口的地方处理。 } );

3. 暴露 request

对外暴露 request,就可以在其他地方直接用 request 发起请求。

export default request;

三、封装前后对比

封装前:每个接口 10+ 行代码,重复 100 遍

封装后:每个接口 1 行代码,全局统一管理

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询