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