当前位置: 首页 > news >正文

Vue3 后台项目接口封装全量方案

以下是涵盖请求拦截、响应拦截、错误处理、接口统一管理、环境区分的全量实现,适配 Vue3 + Vite 技术栈,支持 TS/JS 双环境。

一、核心依赖

核心使用 axios 作为 HTTP 请求库,先安装依赖:

# npm npm install axios --save # yarn yarn add axios # pnpm pnpm add axios

二、第一步:封装 axios 实例(请求 / 响应拦截)

在项目 src 目录下创建 utils/request.ts(TS 版本,JS 可删除类型定义直接使用),封装全局 axios 实例,处理拦截器、超时、请求头等通用配置。

import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios'; import { ElMessage, ElMessageBox } from 'element-plus'; // 假设使用 Element Plus 做UI提示(可替换为其他UI库) import { useUserStore } from '@/stores/user'; // Pinia 用户状态管理(存储token等) import { useRouter } from 'vue-router'; // 路由跳转 // 1. 创建 axios 实例 const service: AxiosInstance = axios.create({ baseURL: import.meta.env.VITE_API_BASE_URL, // 环境变量配置接口基础地址 timeout: 10000, // 请求超时时间(10秒) headers: { 'Content-Type': 'application/json;charset=utf-8' // 默认请求头 } }); // 2. 请求拦截器:添加token、处理请求参数等 service.interceptors.request.use( (config: AxiosRequestConfig) => { const userStore = useUserStore(); // 给请求头添加token(后台鉴权常用) if (userStore.token) { config.headers = config.headers || {}; config.headers['Authorization'] = `Bearer ${userStore.token}`; // 格式根据后台要求调整(可改为 token: xxx) } return config; }, (error: AxiosError) => { // 请求发送前的错误处理 console.error('请求拦截器错误:', error); return Promise.reject(error); } ); // 3. 响应拦截器:统一处理响应结果、错误码 service.interceptors.response.use( (response: AxiosResponse) => { const res = response.data; // 后台返回的原始数据(一般是JSON格式) // 假设后台统一响应格式:{ code: number, msg: string, data: any } // code=200 表示请求成功(具体状态码根据后台约定调整) if (res.code !== 200) { // 提示错误信息 ElMessage.error(res.msg || '请求失败'); // 特殊错误码处理:如
http://www.gsyq.cn/news/173870.html

相关文章:

  • 2025年比较好的商用鲜面条生产线/商用全自动面条生产线实力厂家TOP推荐榜 - 行业平台推荐
  • PySimpleGUI配置文件版本管理:5个简单技巧确保应用平稳升级
  • 面向中小学的免费人工智能通识课程:完整指南与实践方案
  • PyTorch-CUDA-v2.6镜像是否支持MAE掩码自编码器?ViT预训练可用
  • Reagent编译器深度解析:实战性能优化终极指南
  • 如何用AI魔法编辑轻松制作专业视频:5大智能功能详解
  • 从零实现VHDL有限状态机——课程大作业指南
  • Rust RFC机制:构建开源项目治理的新范式
  • PyTorch-CUDA-v2.6镜像是否支持AppDynamics智能运维?
  • Springfox实战指南:从零构建API文档自动化系统
  • 机器学习实战指南:从零到精通的完整训练教程
  • 理解xTaskCreate参数在驱动中的意义:一文说清
  • MarkSheet终极指南:免费HTML和CSS教程完整攻略
  • CycleGAN图像风格转换完整指南:从零开始实现季节变换
  • NapCatQQ开发环境配置全攻略:打造专属QQ机器人开发工作台
  • Redpill Recovery:5大核心优势解析,打造最稳定的群晖引导环境
  • GokuRakuJoudo终极指南:用EDN配置解放Karabiner生产力
  • ImPlot强力指南:快速掌握高性能绘图库的实战技巧
  • Whisper.cpp语音识别终极指南:如何在5分钟内实现高精度语音转文字
  • Waymo数据集终极指南:从入门到精通的完整教程
  • trash-cli:告别误删恐惧,让你的文件删除操作更安全
  • _springboot公司日常考勤系统(11609)
  • qserialport异步读写在协议解析中的行为解析
  • 2025年终GEO优化公司推荐:基于技术实力与客户案例的TOP5排名深度解析 - 十大品牌推荐
  • 颠覆传统:本地文件转换新纪元的安全高效解决方案
  • BookStack完整指南:如何快速搭建专业文档知识库
  • cp2102 usb to uart桥接控制器深度剖析:入门级硬件连接
  • 2025年终GEO优化公司推荐:主流服务商横向评测与5家实力对比 - 十大品牌推荐
  • 懒猫书签清理器:终极浏览器书签整理神器
  • 终极ownCloud企业级集群部署实战:从零搭建高可用文件共享系统