Как я могу сделать исходящий HTTP-запрос POST с данными в node.js?
node.js
http
post
httprequest
отметка
источник
источник
node-fetch
который является реализацией нативногоfetch
метода JavaScript, для выполнения HTTP-запросов.Ответы:
Вот пример использования node.js для выполнения запроса POST к API компилятора Google:
Я обновил код, чтобы показать, как публиковать данные из файла, вместо жестко закодированной строки. Для этого он использует команду async
fs.readFile
, публикуя реальный код после успешного чтения. Если есть ошибка, она выдается, и если нет данных, процесс завершается с отрицательным значением, указывающим на ошибку.источник
querystring.stringify()
не поддерживает вложенные объекты , поэтому вы можете использоватьqs.stringify()
вместо этого.Content-Length
это байты и не обязательно длина строки (UTF-16 и т. д.). ИспользованиеBuffer.byteLength(data)
всегда будет правильным.querystring.stringify
должен быть вашим собственным объектом данных, а не мусором, который отображается в этом ответе (что может быть полезно для файловых объектов?). Я застрял на этом целую вечность ... stackoverflow.com/questions/9768192/… предоставил мое полное решениеЭто становится намного проще, если вы используете библиотеку запросов .
Помимо обеспечения хорошего синтаксиса, он упрощает запросы json, обрабатывает подписи oauth (для твиттера и т. Д.), Может создавать многоэлементные формы (например, для загрузки файлов) и потоковую передачу.
Для установки запроса используйте команду
npm install request
источник
Вы можете использовать библиотеку запросов. https://www.npmjs.com/package/request
Чтобы опубликовать данные JSON:
Чтобы опубликовать данные XML:
источник
Я использую Restler и Needle для производственных целей. Они оба гораздо более мощные, чем родной httprequest. Можно запросить с базовой аутентификацией, специальной записью заголовка или даже загружать / скачивать файлы.
Что касается операции post / get, они также намного проще в использовании, чем необработанные вызовы ajax с использованием httprequest.
источник
Просто и без зависимостей. Использует обещание, чтобы вы могли дождаться результата. Возвращает тело ответа и не проверяет код состояния ответа.
Применение:
источник
write
методreq,write()
?Вы также можете использовать Requestify , действительно классный и простой HTTP-клиент, который я написал для nodeJS +, он поддерживает кэширование.
Просто сделайте следующее:
источник
Обновление 2020:
Мне очень нравится phin - ультралегкий HTTP-клиент Node.js
Это может быть использовано двумя разными способами. Один с Обещаниями (Async / Await), а другой с традиционными стилями обратного вызова.
Установить через:
npm i phin
Прямо из README с
await
:Непроизведенный (обратный вызов) стиль:
По состоянию на 2015 год в настоящее время существует множество различных библиотек, которые могут выполнить это с минимальным кодированием. Я очень предпочитаю элегантные легковесные библиотеки для HTTP-запросов, если вам абсолютно не нужен контроль над низкоуровневыми HTTP-компонентами.
Одна такая библиотека - Unirest
Чтобы установить его, используйте
npm
.$ npm install unirest
И на
Hello, World!
примере, к которому все привыкли.Дополнительно:
многие люди также предлагают использовать запрос [2]
Стоит отметить, что за кулисами
Unirest
используетсяrequest
библиотека.Unirest предоставляет методы для прямого доступа к объекту запроса.
Пример:
источник
источник
Доступны десятки библиотек с открытым исходным кодом, которые вы можете использовать для выполнения HTTP-запроса POST в Node.
1. Аксиос (рекомендуется)
2. Игла
3. Запрос
4. Собственный модуль HTTPS
Для деталей, проверьте эту статью .
источник
Это самый простой способ, которым я пользуюсь, чтобы сделать запрос: используя модуль запроса.
Команда для установки модуля запроса:
Пример кода:
Вы также можете использовать встроенный модуль http для Node.js, чтобы сделать запрос.
источник
Мне нравится простота суперагента ( https://github.com/visionmedia/superagent ). Один и тот же API на узле и в браузере.
Существует также извлечение узла ( https://www.npmjs.com/package/node-fetch ), в котором есть API, соответствующий
fetch
браузерам - однако для этого требуется ручное кодирование строки запроса, автоматическая обработка типов содержимого не выполняется или так что любая другая работа superagent делает.источник
Если вы ищете HTTP-запросы на основе обещаний, axios прекрасно справляется со своей задачей.
ИЛИ
источник
Чтобы
отправить запрос Rest / JSON Мы можем просто использовать пакет запроса и сохранить значения, которые мы должны отправить, в переменной Json.
Сначала установите пакет require в вашей консоли с помощью npm install request --save
источник
Я нашел видео, которое объясняет, как этого добиться: https://www.youtube.com/watch?v=nuw48-u3Yrg
Он использует модуль http по умолчанию вместе с модулями querystring и stringbuilder. Приложение берет два числа (используя два текстовых поля) с веб-страницы и после отправки возвращает сумму этих двух (вместе с сохранением значений в текстовых полях). Это лучший пример, который я мог найти где-либо еще.
источник
Это мое решение для
POST
аGET
.О
Post
методе:Если тело является объектом JSON, поэтому важно десериализовать его
JSON.stringify
и, возможно, установить соответствующийContent-Lenght
заголовок:перед тем как написать это на запрос:
Об обоих
Get
иPost
методах:Это
timeout
может произойти какsocket
разъединение, поэтому вы должны зарегистрировать его обработчик следующим образом:в то время как
request
обработчикЯ настоятельно рекомендую зарегистрировать оба обработчика.
Тело ответа разбито на куски, поэтому вы должны соединить куски в
data
обработчике:На будет содержать все тело ответа:
end
body
Это безопасно , чтобы обернуть с
try
... уловомthe
JSON.parse` , так как вы не можете быть уверены , что это хорошо отформатированный JSON на самом деле и нет никакого способа , чтобы быть уверенным в нем в то время , что вы делаете запрос.Модуль:
SimpleAPI
Применение:
источник
После долгих попыток создания низкоуровневой утилиты для обработки сообщений и получения запросов для моего проекта, я решил опубликовать свои усилия здесь. В основном в строках принятого ответа приведен фрагмент для выполнения запросов http и https POST для отправки данных JSON.
источник
Или вы можете использовать эту библиотеку:
источник
request
библиотека устарела.Axios - это основанный на обещаниях HTTP-клиент для браузера и Node.js. Axios упрощает отправку асинхронных HTTP-запросов на конечные точки REST и выполнение операций CRUD. Его можно использовать в простом JavaScript или с такой библиотекой, как Vue или React.
источник
Публикация другого примера axios запроса axios.post, в котором используются дополнительные параметры конфигурации и пользовательские заголовки.
источник
Используя запрос зависимости.
Простое решение:
источник
request
взялась?Request-Promise
Обеспечивает ответ на основе обещания. Коды ответа http, отличные от 2xx, приведут к отклонению обещания. Это может быть перезаписано установкой options.simple = falseисточник