封装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; } }); };
作者:忞翛
出处:https://www.cnblogs.com/lczmx/p/15901123.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
欢迎各位大佬评论交流。可以的话,不妨点一下推荐。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了