Typescript项目,ajax请求封装的最佳实践?
通常项目中会有一个url.ts
来统一管理所有的请求地址
1,如何封装xhr
请求使用起来会比较方便?
2,或者有什么开源的项目可以参考?
想要达到的效果是: 请求某个URL
的时候,在请求中可以约束参数和返回类型
现在的想法是,封装一个ajax请求
,然后使用泛型传递类型,大概类似这样
// url ...
const uerInfo = '/api/users/getUserInfo';
const orderInfo = '/api/order/getOrderInfo';
const productInfo = '/api/product/getProductInfo';
// ... 其它url
// 假设有这么一个封装的请求
function request<T>(config: IConfig): Promise<{code:number,message:string} & T> {
return new Promise((resolve, reject) => {
// ajax请求
});
}
// 假设以下 'I' 开头的类型已经定义
// 请求用户信息
const getUserInfo = (config: IUserInfoCOnfig) => request<IUserInfo>(config);
// 获取订单信息
const getOrderInfo = (config: IOrderInfoConfig) => request<IOrderInfo>(config);
// 获取产品信息
const getProductInfo = (config: IProductInfoConfig) => request<IProductInfo>(config);
// ... 其它请求封装
但是这样的话,如果请求有几百个,为每一个url
编写请求会显得很繁琐,而且写了很多重复的代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这大概就是你想要的效果吧。
我的课程:TypeScript从入门到实践 【2020 版】 第 6.3 节就在讲泛型,可以来听听啊!
繁琐的问题在于你是手动去写的 而一般来讲这个需要根据API文档自动生成才是合理的
我们就是根据swagger来生成前端所需要的接口请求,入参,返回值包括要用到的枚举都是后端定义,前端只管调用方法