request 已经被废弃了,有什么替代品吗?

2020-03-27 23:21:05 +08:00
 FakerLeung

https://github.com/request/request#deprecated

As of Feb 11th 2020, request is fully deprecated. No new changes are expected to land. In fact, none have landed for some time.

For more information about why request is deprecated and possible alternatives refer to this issue.

不知道在 nodejs 中,有哪个比较好的替代品呢?

17357 次点击
所在节点    Node.js
33 条回复
giuem
2020-03-27 23:31:08 +08:00
GaoGeYang
2020-03-27 23:31:33 +08:00
axios ?
noe132
2020-03-27 23:45:08 +08:00
axios
FakerLeung
2020-03-27 23:52:24 +08:00
@giuem #1
@GaoGeYang #2
@noe132 #3
顺便问下,nodejs 如何模拟 form-data 的上传图片啊。
binux
2020-03-27 23:53:45 +08:00
node-fetch
GaoGeYang
2020-03-27 23:57:55 +08:00
axios 的话,设置好 headers 的 content type,data 用 qs.stringify 就行了
noe132
2020-03-28 00:04:11 +08:00
xcstream
2020-03-28 00:19:42 +08:00
我还在用 fetch 方便前后端之间复制粘贴
xcstream
2020-03-28 00:28:32 +08:00
我觉得这种库不更新 没什么不正常
noqwerty
2020-03-28 01:10:59 +08:00
你发的链接里再往下翻翻就有他推荐的替代品。

https://github.com/request/request/issues/3143
seki
2020-03-28 01:12:18 +08:00
node-fetch got axios 都是不错的替代,就看 api 的个人喜好吧
ck65
2020-03-28 02:38:14 +08:00
今天看到一个新包 gretch,TS 写的 fetch 封装。
rabbbit
2020-03-28 02:54:04 +08:00
node-fetch 吧, axios proxy 有 bug
WittBulter
2020-03-28 03:19:27 +08:00
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` ) 不用库也就几行而已。
WittBulter
2020-03-28 03:21:33 +08:00
没法编辑... 真的难受
yyfearth
2020-03-28 07:34:13 +08:00
@rabbbit axios proxy 我记得最新版修好了
kof21411
2020-03-28 07:58:37 +08:00
axios 比较好用
Stlin
2020-03-28 09:34:48 +08:00
还以为是 Python 的 request,仔细一看 node 节点
musi
2020-03-28 10:05:59 +08:00
@Stlin Python 的 requests 那么优雅,废弃就有点可惜了吧😂
densuc
2020-03-28 11:00:28 +08:00
@livid 好像黑底的代码展示有点难以阅读,是否可以优化一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/656966

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX