- r2 是比较早期的替代品,算是 request next 早期比较通用的产品,core 大约 3.17kb
- node-fetch 是仿造 fetch API 写的 NodeJS HTTP 客户端,如果你对 fetch 比较熟悉考虑这个,有点是一直在更新,启动堆栈差不多 20k 。大家比较熟就不多说了。
- axios 是浏览器与 NodeJS 兼容的,比较重,因为兼容了浏览器的代码。这部分代码在运行时也会进入堆栈,尽管不会执行,因为不管什么 module 都不能 tree shaking 编程式的分发的代码块。API 有些土里土气,属于简单易懂的状态型编程风格。
- bent 也是浏览器与 NodeJS 兼容的,但比较小巧 (意味着功能没有那么多)。API 只有一个函数,但是目前没有基线测试不知道性能如何。
- got 专业的 NodeJS HTTP 客户端。非常非常非常大。亮点之一就是支持
pagination
与一些编程式的 hook,社区中有非常非常非常多的示例教你如何使用它,毕竟用的人多。开发者也是知名的开源狂魔sindresorhus
(他维护了 1000+ 的开源仓库),算是比较值得信赖吧。 - superagent ,一个有意思的 HTTP 客户端库吧,用的链式 API 。也是兼容浏览器和 NodeJS 。优势是支持 HTTP2,具体可以看这个 PR。早期是你们熟知的 TJ 一个人在写,现在已经是组织在维护。(体积也很大)
总结一下,如果你喜欢小巧一些可以考虑 node-fetch
和 bent
,需要功能比较强大就是 got
和 superagent
。
另外给你们强烈推荐一个适用于微服务的 http-client: zeit-fetch,支持 DNS 缓存、重试和 keep-http-agent
,如果你正在写微服务,可以试一试。
最后说一句题外话,现在 NodeJS 的 API 非常的友好,如果你只是一个简单的 request(特别是 get
) 不用库也就几行而已。