这里写自定义目录标题
背景
笔者一直找一个轻量级的http客户端,需要同时支持浏览器环境和node环境,因为是作为内嵌模块,要求文件轻量级,功能要求简单,需要支持最简单的restful调用,支持json,form内容格式,支持Primise
遇到的坑
做常用的client一般都是:
- superagent
- axios
- needle
- request
- got
- axios-mini
等等
这些包非常优秀,大都同时支持浏览器和node,但是动则几百KB,甚至几MB,过于庞大
轻量级
于是笔者找一些轻量级的包:
- http.min : 7KB,node only
- centra :10KB, node only
- reeq : 10KB , 浏览器only
- send-request :15KB, node only
- unirest : 轻量级,开玩笑。。
- phin: 12kb,只支持node
- ddflyio : 490KB 开玩笑
- gotch :几十KB,只支持浏览器
- phax : 12KB,只支持node
10.lightning-request :20KB,only node - awi : 200KB ,轻量?
- xeta : 170KB,轻量?
- requesta : 12KB,node only
- luch : 230KB , 轻量?
- phax : 17KB,浏览器 only
总而言之,比较绝望,还是自己实现一个轻量级的client:mini.req.js
mini.req.js
功能如下:
1.极小:5KB以下
2. 同时支持浏览器和node
3. 根据当前环境自动切换,内部集成reeq和centra
4. 可在html单独使用
5. 支持promise,await
6. 主流接口调用封装,并自动识别传参类型及返回值类型
miniReq('http://localhost/hello','POST',{ hello : 'world'}).then(res=>{})
(async ()=>{
var get = await miniReq.get(url,data,options)
var post = await miniReq.post(url,data,options)
var put = await miniReq.put(url,data,options)
var del = await miniReq.delete(url,data,options)
})()
- 支持browserify
源码
https://github.com/apporoad/mini.req.js 😜喜欢请支持,但求star❤