Также стоит отметить, что есть очень популярная библиотека-обертка request.jsgithub.com/mikeal/request
Farzher
2
http запрос y асинхронный, curl является синхронизированным.
e-info128
2
@WHK - такова природа node.js
скользко
Большая проблема, которую я вижу с этим, состоит в том, что вы не можете просто ввести URL и получить ответ. Вы должны разделить URL в единицах измерения, чтобы запросить его. Но, конечно, есть способ, просто было бы удобнее использовать для этого одну команду, похожую на curl.
Это очень низкий уровень по сравнению с поведением, подобным скручиванию, которое запрашивал ОП.
Дан Даскалеску
1
Для всех: в настоящее время используйте request- npmjs.com/package/request - и приведите ниже ответ Нитиша, который является лучшим ответом в 2018 году.
Дэн Ниссенбаум,
Добро пожаловать в реальность: запрос устарел, см. Github.com/request/request/issues/3142 Мне кажется, что операция «низкого уровня» имеет больший потенциал, чем эта, потому что она совсем не низкая, это BASIC
var request = require('request');
request('http://www.google.com',function(error, response, body){if(!error && response.statusCode ==200){
console.log(body)// Show the HTML for the Google homepage. }else{
console.log("Error "+response.statusCode)}})
Я попытался установить и node-curl, и node-libcurl, но оба они выдают мне одно и то же сообщение: «Не удается найти заголовочный файл curl». Это во время node tools/retrieve-win-deps && node tools/generate-stubs && node-gyp rebuildшага. Есть предположения?
SaganRitual
@GreatBigBore вам нужен пакет libcurl devel, установленный на вашем компьютере. Например, если вы используете Debian, вы можете установить его с$ apt-get install libcurl4-openssl-dev
JCM
1
Вы можете использовать эту -Lопцию как-нибудь?
Corvid
2
Да: CURLOPT_FOLLOWLOCATION , с node-libcurl, который вы собираетесь использовать curl.setOpt( 'FOLLOWLOCATION', true );. Кстати, подобные вопросы лучше подходят для отслеживания проблем, чем этот раздел комментариев. ;)
JCM
23
РЕДАКТИРОВАТЬ:
Для новых проектов, пожалуйста, воздержитесь от использования запроса, так как теперь проект находится в режиме обслуживания и в конечном итоге будет объявлен устаревшим
Вместо этого я бы порекомендовал Axios , библиотека соответствует последним стандартам Node, и есть несколько доступных плагинов для его улучшения, позволяющего имитировать ответы сервера, автоматические повторные попытки и другие функции.
const axios = require('axios');// Make a request for a user with a given ID
axios.get('/user?ID=12345').then(function(response){// handle success
console.log(response);}).catch(function(error){// handle error
console.log(error);}).then(function(){// always executed});
var request = require('request');
request('http://www.google.com',function(error, response, body){if(!error && response.statusCode ==200){
console.log(body)// Show the HTML for the Google homepage.}})
Приведенные выше примеры работают, но не идут так далеко, чтобы действительно иметь дело с реальным примером (т. Е. Когда вы обрабатываете данные, поступающие несколькими порциями). Одна вещь, в которой вы должны убедиться, это то, что у вас есть обработчик 'on chunk', который push - данные в массив (самый быстрый способ сделать это в JS) и обработчик «on-end», который объединяет их все вместе, чтобы вы могли вернуть их.
Это особенно необходимо, когда вы работаете с большими запросами (более 5000 строк) и сервер отправляет вам кучу данных.
Существует модуль npm для выполнения запроса типа curl npm curlrequest.
Шаг 1: $npm i -S curlrequest
Шаг 2: В вашем файле узла
let curl = require('curlrequest')let options ={}// url, method, data, timeout,data, etc can be passed as options
curl.request(options,(err,response)=>{// err is the error returned from the api// response contains the data returned from the api})
var request = require('request');
request('http://www.google.com',function(error, response, body){
console.log('error:', error);// Print the error if one occurred
console.log('statusCode:', response && response.statusCode);// Print the response status code if a response was received
console.log('body:', body);// Print the HTML for the Google homepage.});
Для лучшей практики также используйте модуль Winston Logger или простой файл console.log, а затем запустите ваше приложение, например:
npm start output.txt
Результат приведенной выше команды сгенерирует один текстовый файл в корневом каталоге со всеми данными, которые вы напечатали в console.log
Вот мой исходный текст моей полностью реализованной задачи Grunt для всех, кто задумывается о работе с EdgeCast API. В моем примере вы обнаружите, что я использую grunt-shell для выполнения команды curl, которая очищает CDN.
Это было то, что я закончил после нескольких часов, пытаясь получить HTTP-запрос для работы в Node. Мне удалось получить один работающий в Ruby и Python, но не отвечал требованиям этого проекта.
Использует reqclient , это небольшой клиентский модуль, requestкоторый позволяет вам регистрировать все действия в стиле cURL (необязательно, для сред разработки). Также имеет приятные функции, такие как разбор URL и параметров, интеграция аутентификации, поддержка кэша и т. Д.
Например, если вы создаете объект client и делаете запрос:
Командная строка покажет проблемы - неправильное имя пользователя / пароль; плохой запрос и т. д.
--URL база данных / расположение сервера (я использовал простую бесплатную Cloudant DB) --user - имя пользователя части аутентификации: pass, который я ввел через API pass -X определяет, какую команду вызывать (PUT, GET, POST, DELETE) -H тип контента - Cloudant - это база данных документов, где используется JSON - сам контент данных, отсортированный как JSON
Модуль запроса npm Узел запроса moulde удобен в использовании, он имеет настройки параметров для запроса get / post, а также широко используется в производственной среде.
Вы можете использовать модуль npm запроса. Супер прост в использовании. Запрос предназначен для простейшего способа сделать http-звонки. Он поддерживает HTTPS и по умолчанию выполняет перенаправления.
var request = require('request');
request('http://www.google.com',function(error, response, body){
console.log('error:', error);// Print the error if one occurred
console.log('statusCode:', response && response.statusCode);// Print the response status code if a response was received
console.log('body:', body);// Print the HTML for the Google homepage.});
http.request
...Ответы:
См. Документацию для модуля HTTP для полного примера:
https://nodejs.org/api/http.html#http_http_request_options_callback
источник
request.js
github.com/mikeal/requestcURL
команду в запрос node.js: curl.trillworks.com/#nodehttp
Модуль , который используется для запуска серверов также используются для удаленных запросов.Вот пример в их документах:
источник
request
- npmjs.com/package/request - и приведите ниже ответ Нитиша, который является лучшим ответом в 2018 году.Вы можете легко использовать модуль запроса:
https://www.npmjs.com/package/request
Образец кода:
источник
Так как похоже, что
node-curl
он мертв, я его разветвил, переименовал и изменил, чтобы он был более скрученным и компилировался в Windows.node-libcurl
Пример использования:
Perform является асинхронным,
и в настоящее время невозможно использовать его синхронно (и, вероятно, никогда не будет).Это все еще в альфа-версии, но это скоро изменится, и помощь приветствуется.Теперь можно использовать
Easy
дескриптор напрямую для запросов синхронизации, например:Также проект сейчас стабилен!
источник
node tools/retrieve-win-deps && node tools/generate-stubs && node-gyp rebuild
шага. Есть предположения?$ apt-get install libcurl4-openssl-dev
-L
опцию как-нибудь?curl.setOpt( 'FOLLOWLOCATION', true );
. Кстати, подобные вопросы лучше подходят для отслеживания проблем, чем этот раздел комментариев. ;)РЕДАКТИРОВАТЬ:
Для новых проектов, пожалуйста, воздержитесь от использования запроса, так как теперь проект находится в режиме обслуживания и в конечном итоге будет объявлен устаревшим
https://github.com/request/request/issues/3142
Вместо этого я бы порекомендовал Axios , библиотека соответствует последним стандартам Node, и есть несколько доступных плагинов для его улучшения, позволяющего имитировать ответы сервера, автоматические повторные попытки и другие функции.
https://github.com/axios/axios
Или используя async / await:
Я обычно использую REQUEST, это упрощенный, но мощный HTTP-клиент для Node.js
https://github.com/request/request
Это на НПМ
npm install request
Вот пример использования:
источник
хорошо, если вам действительно нужен эквивалент завитка, вы можете попробовать
node-curl
вам, вероятно, нужно будет добавить
libcurl4-gnutls-dev
.источник
Приведенные выше примеры работают, но не идут так далеко, чтобы действительно иметь дело с реальным примером (т. Е. Когда вы обрабатываете данные, поступающие несколькими порциями). Одна вещь, в которой вы должны убедиться, это то, что у вас есть обработчик 'on chunk', который push - данные в массив (самый быстрый способ сделать это в JS) и обработчик «on-end», который объединяет их все вместе, чтобы вы могли вернуть их.
Это особенно необходимо, когда вы работаете с большими запросами (более 5000 строк) и сервер отправляет вам кучу данных.
Вот пример в одной из моих программ (coffeescript): https://gist.github.com/1105888
источник
Как насчет, например, https://github.com/joyent/node/wiki/modules#wiki-tcp . Очень краткое резюме =>
источник
Существует модуль npm для выполнения запроса типа curl
npm curlrequest
.Шаг 1:
$npm i -S curlrequest
Шаг 2: В вашем файле узла
Для дальнейшего чтения и понимания, npm curlrequest
источник
Используйте модуль запроса npm и после звонка
Для лучшей практики также используйте модуль Winston Logger или простой файл console.log, а затем запустите ваше приложение, например:
Результат приведенной выше команды сгенерирует один текстовый файл в корневом каталоге со всеми данными, которые вы напечатали в console.log
источник
В итоге я использовал библиотеку grunt-shell .
Вот мой исходный текст моей полностью реализованной задачи Grunt для всех, кто задумывается о работе с EdgeCast API. В моем примере вы обнаружите, что я использую grunt-shell для выполнения команды curl, которая очищает CDN.
Это было то, что я закончил после нескольких часов, пытаясь получить HTTP-запрос для работы в Node. Мне удалось получить один работающий в Ruby и Python, но не отвечал требованиям этого проекта.
источник
Использует reqclient , это небольшой клиентский модуль,
request
который позволяет вам регистрировать все действия в стиле cURL (необязательно, для сред разработки). Также имеет приятные функции, такие как разбор URL и параметров, интеграция аутентификации, поддержка кэша и т. Д.Например, если вы создаете объект client и делаете запрос:
Он будет входить в консоль примерно так:
Запрос будет возвращать Promise объект, так что вы должны с ручкой
then
иcatch
что делать с результатом.reqclient
доступен с НПМ , вы можете установить модуль с:npm install reqclient
.источник
У меня была проблема с отправкой POST-данных в облачную БД из IOT RaspberryPi, но через несколько часов мне удалось все исправить.
Я использовал командную строку, чтобы сделать это.
Командная строка покажет проблемы - неправильное имя пользователя / пароль; плохой запрос и т. д.
--URL база данных / расположение сервера (я использовал простую бесплатную Cloudant DB) --user - имя пользователя части аутентификации: pass, который я ввел через API pass -X определяет, какую команду вызывать (PUT, GET, POST, DELETE) -H тип контента - Cloudant - это база данных документов, где используется JSON - сам контент данных, отсортированный как JSON
источник
Модуль запроса npm Узел запроса moulde удобен в использовании, он имеет настройки параметров для запроса get / post, а также широко используется в производственной среде.
источник
Вы можете попробовать использовать что-то вроде этого
источник
Вы можете попробовать использовать приложение POSTMAN Chrome для вашего запроса, и вы можете сгенерировать код узла js оттуда
источник
Вы можете использовать модуль npm запроса. Супер прост в использовании. Запрос предназначен для простейшего способа сделать http-звонки. Он поддерживает HTTPS и по умолчанию выполняет перенаправления.
источник