Альтернативы запросу-обещанию-нативному - PullRequest
0 голосов
/ 21 февраля 2020

Я искал современные модули, которые реализуют основные c методы HTTP, такие как GET, POST в Node.js.

Я думаю, наиболее популярным является request. Его асинхронная / ожидающая версия называется request-promise-native.

Недавно я узнал, что эти модули устарели . Итак, какие современные альтернативы я могу использовать, основанные на парадигме асинхронности / ожидания?

Ответы [ 3 ]

0 голосов
/ 21 февраля 2020

Просто для того, чтобы иметь в виду другой вариант, я бы предложил использовать нативный модуль 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);
    }
})();

0 голосов
/ 21 февраля 2020

Я бы настоятельно рекомендовал использовать node-fetch . Он основан на fetch API в современных браузерах. Он не только основан на обещаниях, но и имеет фактический стандарт .

Единственная причина, по которой вы не будете использовать fetch, заключается в том, что вам не нравится API. Тогда я бы предложил использовать что-нибудь кроссплатформенное, например ax ios или superagent .

Лично я нахожу использование того же API на сервере, и браузер облегчает поддержку и предлагает потенциал для повторного использования кода.

0 голосов
/ 21 февраля 2020

В том же выпуске github для request есть еще одна ссылка, в которой говорится об альтернативах. Вы можете увидеть их здесь . Это ясно объясняет различные типы и стиль, которым они являются (обещание / обратный вызов).

...