封装axios

为了方便调用, 因此对axios作了封装
代码:

import axios from "axios";
import { AxiosRequestConfig } from "axios";
export async function request<T, D>(config: AxiosRequestConfig<D>) {
// 加载中
// 请求数据
return axios
.request<T>(config)
.then((res) => {
// 请求成功返回
// 取消 加载中
if (!res.data) {
throw new Error("请求错误");
}
// 提示msg的信息
// res.data 是 axios 包装的 AxiosResponse<T> ,再 .data
// 才是你自己定义的 ResponseData<T>;另外尽可能用 Promise.resolve 包裹起来,
// 以防 polyfill 时出现兼容问题。
return Promise.resolve(res.data);
})
.catch((e) => {
console.error(e);
// 请求错误
// 取消 加载中
// 异常捕捉后被你吞了,相当于返回了 Promise<void>;所以需要继续向上抛出。
return Promise.reject(e);
});
}

使用时:

import { request } from "@/utils/request";
// 注意使用这种方法声明, 不能直接为字符串
const method: Method = "GET";
const getData = () => {
const config = {
url: "http://localhost:8080/data/review/cards.json",
method,
params,
};
// IResponse 是返回类型的接口, 内部使用泛型指定ICard[]
// any对应的是data, 由于为get请求, 所以为any
request<IResponse<ICard[]>, any>(config).then((response) => {
if (response.data) {
data.value = response.data;
}
});
};
posted @   403·Forbidden  阅读(178)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示
主题色彩