news 2026/4/16 14:00:31

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 || '请求失败'); // 特殊错误码处理:如
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:23:02

Calibre电子书管理完全指南:从零开始掌握数字图书馆

Calibre电子书管理完全指南:从零开始掌握数字图书馆 【免费下载链接】calibre The official source code repository for the calibre ebook manager 项目地址: https://gitcode.com/gh_mirrors/ca/calibre 在数字化阅读日益普及的今天,如何高效管…

作者头像 李华
网站建设 2026/4/16 8:59:16

每日诗歌:梦的交响曲

436、梦的交响曲——灵遁者连续3天的失眠让我听到了梦的交响曲这曲目我并不陌生只是感觉到寒冷毕竟刚刚入秋——437、混沌中的觉醒——灵遁者在梦与现实的边缘徘徊,思绪如乱麻,交织着未知的色彩。星辰坠落,化作纷飞的蝴蝶,翅膀煽动…

作者头像 李华
网站建设 2026/4/3 4:51:52

3分钟掌握AlphaFold预测结果:从入门到精通的置信度指南

3分钟掌握AlphaFold预测结果:从入门到精通的置信度指南 【免费下载链接】alphafold Open source code for AlphaFold. 项目地址: https://gitcode.com/GitHub_Trending/al/alphafold 你是否曾面对AlphaFold输出的蛋白质结构感到困惑?那些五颜六色…

作者头像 李华
网站建设 2026/4/15 8:18:20

M3 Pro芯片MacBook运行CosyVoice语音合成的终极指南

M3 Pro芯片MacBook运行CosyVoice语音合成的终极指南 【免费下载链接】CosyVoice Multi-lingual large voice generation model, providing inference, training and deployment full-stack ability. 项目地址: https://gitcode.com/gh_mirrors/cos/CosyVoice 还在为M3 P…

作者头像 李华
网站建设 2026/4/16 12:24:06

NootRX AMD显卡macOS兼容性终极指南:5分钟解决RDNA 2驱动问题

NootRX AMD显卡macOS兼容性终极指南:5分钟解决RDNA 2驱动问题 【免费下载链接】NootRX Lilu plug-in for unsupported RDNA 2 dGPUs. No commercial use. 项目地址: https://gitcode.com/gh_mirrors/no/NootRX 还在为AMD RDNA 2系列显卡在macOS上的兼容性问题…

作者头像 李华
网站建设 2026/4/15 21:36:51

Latest:macOS应用更新的终极管理工具

Latest:macOS应用更新的终极管理工具 【免费下载链接】Latest A small utility app for macOS that makes sure you know about all the latest updates to the apps you use. 项目地址: https://gitcode.com/gh_mirrors/la/Latest 在macOS系统中&#xff0c…

作者头像 李华