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

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.xdnf.cn/news/16138.html

相关文章:

  • oracle查询数据结构滤涉及的sql语句
  • Oracle 12c 创建数据库初级教程
  • 消息队列学习
  • .net 警告【代码 CS1998】此异步方法缺少 “await“ 运算符,将以同步方式运行。
  • VRRP技术
  • 基于springboot的医院管理系统(源码+论文+开题报告)
  • AWS RDS 排查性能问题
  • 【AI总结】网线技术演进史:从语音电缆到40Gbps的蜕变之路
  • 7.22总结mstp,vrrp
  • Android perfetto 工具使用
  • 浅谈——游戏中的各种配置格式
  • Excel file format cannot be determined, you must specify an engine manually.
  • 【音视频协议篇】RTMP协议
  • 一、Vue概述以及快速入门
  • [IMX][UBoot] 16.Linux 内核移植
  • 智算中心光纤线缆如何实现自动化计算?
  • 初识卷积神经网络CNN
  • (12)机器学习小白入门YOLOv:YOLOv8-cls 模型微调实操
  • 为何在 Vue 的 v-model 指令中不能使用可选链(Optional Chaining)?
  • 开发浏览器插件-保存页面元素数据为json或csv
  • 2.9学习DOM和BOM (主要是获取元素的操作)
  • 苍穹外卖DAY10
  • 如何用 LUKS 和 cryptsetup 为 Linux 配置加密
  • Flink框架:keyBy实现按键逻辑分区
  • Linux物理地址空间入门:从硬件到内核内存的基石
  • 网络设备功能对照表
  • Pytorch张量
  • 云原生技术与应用-Kubernetes Pod调度基础
  • jdk25浅谈
  • 深度学习-常用环境配置