替代 request-promise-native 的方案

13

我在寻找实现Node.js中基本HTTP方法,如GET、POST的现代模块。

我猜最流行的是request。它的async/await版本被称为request-promise-native

最近我了解到这些模块正在被废弃。那么,有哪些基于async/await范式构建的现代替代品可以使用呢?


你有跟进那个问题中的替代链接吗? - jonrsharpe
1
我只找到了bent - Sergey Avdeev
1
那个问题线程中有一个完整的列表链接。但是,为什么你不使用 bent 呢? - jonrsharpe
看起来 Bent 没有获得很高的流行度(每周 7000 次下载)。我想选择一些可以得到帮助的东西。 - Sergey Avdeev
然后 https://dev59.com/0lIH5IYBdhLWcg3wRrjK#I18poYgBc1ULPQZF6FEx - jonrsharpe
请参阅 https://github.com/sindresorhus/got#comparison。 - Yarin
4个回答

8

我强烈建议使用node-fetch。它基于现代浏览器中的fetch API。不仅是基于Promise,而且还有一个实际标准支持。

唯一不使用fetch的原因是您不喜欢该API。然后我建议使用像axiossuperagent这样的跨平台工具。

我个人发现在服务器和浏览器上使用相同的API可以简化维护并提供代码重用的潜力。


5

为了提供另一个选择,我建议使用Node原生的http模块。

import * as http from 'http';

async function requestPromise(path: string) {
    return new Promise((resolve, reject) => {
        http.get(path, (resp) => {
            let data = '';

            resp.on('data', (chunk) => {
                data += chunk;
            });

            resp.on('end', () => {
                resolve(data);
            });

        }).on("error", (error) => {
            reject(error);
        });
    });
}

(async function () {
    try {
        const result = await requestPromise('http://www.google.com');
        console.log(result);
    } catch (error) {
        console.error(error);
    }
})();


2
在同一个关于request的Github问题中,还有另一个链接介绍了替代方案。您可以在这里看到它们。它清楚地解释了不同类型和它们的风格(promise/callback)。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接