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

axios统一封装规范管理

新建/api/

1.新建统一处理文件/api/axios.ts

import axios from "axios"const http = axios.create({baseURL: import.meta.env.VITE_API_BASE_URL, // 从环境变量读取timeout: 10000,
});// 请求拦截器(如添加 Token)
http.interceptors.request.use((config) => {const token = localStorage.getItem("token");if (token) {config.headers.Authorization = `Bearer ${token}`;}return config;
});// 响应拦截器(统一处理错误和返回数据)
http.interceptors.response.use((response) => {// 如果后端返回 { code, data, message } 格式if (response.data.code !== 200) {return Promise.reject(response.data.message); // 业务错误}return response.data.data; // 直接返回有效数据},(error) => {// HTTP 错误(如 401、404、500)const errorMessage = error.response?.data?.message || error.message;console.error("API Error:", errorMessage);return Promise.reject(errorMessage);}
);export default http;

2.其他api:/api/user.ts

// src/api/user.ts
import http from "./axios";export const login = (data: { username: string; password: string }) => {return http.post("/auth/login", data);
};export const getUserInfo = (userId: number) => {return http.get(`/user/${userId}`);
};
import http from "./axios";export const getProductList = (params: { page: number; size: number }) => {return http.get("/products", { params });
};

3.在组件中使用

<script setup>
import { getUserInfo } from "@/api/user";
import { getProductList } from "@/api/product";const fetchData = async () => {try {const user = await getUserInfo(1);const products = await getProductList({ page: 1, size: 10 });} catch (error) {console.error("请求失败:", error);}
};
</script>
http://www.dtcms.com/a/291921.html

相关文章:

  • 同步本地文件到服务器上的Docker容器
  • 学习做精准、自动化、高效的 GEO优化系统
  • 如何判断进程是否存活?Linux 系统中的核心方法解析
  • 【前端】ikun-pptx编辑器前瞻问题一: pptx的xml样式, 使用html能100%还原么
  • UE5 UI ScrollBox 滚动框
  • 报错error:0308010C:digital envelope routines::unsupported解决方案
  • 《Webpack热更新瓶颈突破:全链路优化指南》
  • Android KTX:让Kotlin开发更简洁高效的利器
  • 闲庭信步使用图像验证平台加速FPGA的开发:第二十九课——车牌识别的FPGA实现(1)车牌定位的预处理
  • 边缘计算网关赋能智慧农业:物联网边缘计算的创新应用与实践
  • vue apk返回键不好使
  • git push新版问题解决
  • ArrayList与顺序表
  • 【C++】继承和多态扩展学习
  • 面向对象的三大特征
  • Go 语言中,创建结构体实例对象有几种常用方式
  • 大数学习笔记整理
  • Leetcode—692. 前K个高频单词【中等】(桶排序)
  • 从感知到决策:虚拟仿真系统与视觉算法融合下的多路RTSP视频接入技术探究
  • freertos关键函数理解 uxListRemove
  • 基于 Spring Batch 和 XXL-Job 的批处理任务实现
  • linux c语言进阶 - 进程,通信方式
  • PHICOMM(斐讯)N1盒子 - Armbian25.05(Debian 12)刷入U盘/EMMC
  • Unity之C# 脚本与Unity Visual Scripting 交互
  • Java 网络编程详解:从基础到实战,彻底掌握 TCP/UDP、Socket、HTTP 网络通信
  • 【数据可视化-70】奶茶店销量数据可视化:打造炫酷黑金风格的可视化大屏
  • Vue + WebSocket 实时数据可视化实战:多源融合与模拟数据双模式设计
  • AI创作系列第22篇:前端缓存与更新机制重构 - 表情包系统的全面升级
  • 贪心算法Day4学习心得
  • 当直播间告别“真人时代”:AI数字人重构商业新秩序