эквивалент cURL в Node.js? - PullRequest
       20

эквивалент cURL в Node.js?

129 голосов
/ 25 июля 2011

Я хочу использовать информацию из HTTP-запроса с использованием Node.js (т.е. вызвать удаленный веб-сервис и передать ответ клиенту).

В PHP я бы использовал cURL для этого,Какая лучшая практика в Node?

Ответы [ 17 ]

1 голос
/ 08 мая 2018

Модуль npm запроса Узел запроса moulde удобен в использовании, имеет настройки параметров для запроса get / post, а также широко используется в рабочей среде.

1 голос
/ 05 июля 2017

У меня была проблема с отправкой POST-данных в облачную БД из IOT RaspberryPi, но через несколько часов мне удалось все исправить.

Для этого я использовал командную строку.

sudo curl --URL http://<username>.cloudant.com/<database_name> --user <api_key>:<pass_key> -X POST -H "Content-Type:application/json" --data '{"id":"123","type":"987"}'

Командная строка покажет проблемы - неправильное имя пользователя / пароль; плохой запрос и т. д.

- URL базы данных / расположение сервера (я использовал простую бесплатную Cloudant DB) --user - имя пользователя для части аутентификации: pass я ввел через API pass -X определяет, какую команду вызывать (PUT, GET, POST, DELETE) -H тип контента - Cloudant о базе данных документов, где используется JSON Сам контент --data отсортирован как JSON

1 голос
/ 22 октября 2016

Использует Требуется , это небольшой клиентский модуль поверх request, который позволяет регистрировать все действия в стиле cURL (необязательно, для сред разработки).Также имеет приятные функции, такие как разбор URL-адресов и параметров, интеграция аутентификации, поддержка кэша и т. Д.

Например, если вы создаете объект клиента и делаете запрос:

var RequestClient = require("reqclient").RequestClient;
var client = new RequestClient({
        baseUrl:"http://baseurl.com/api/v1.1",
        debugRequest:true, debugResponse:true
    });

var resp = client.post("client/orders", {"client":1234,"ref_id":"A987"}, {headers: {"x-token":"AFF01XX"}})

Будет регистрироватьсяв консоли что-то вроде этого:

[Requesting client/orders]-> -X POST http://baseurl.com/api/v1.1/client/orders -d '{"client": 1234, "ref_id": "A987"}' -H '{"x-token": "AFF01XX"}' -H Content-Type:application/json
[Response   client/orders]<- Status 200 - {"orderId": 1320934}

Запрос вернет объект Promise , поэтому вам нужно с помощью then и catch обращаться с результатом.

reqclient доступен с npm , вы можете установить модуль с: npm install reqclient.

1 голос
/ 11 ноября 2014

В итоге я использовал библиотеку grunt-shell .

Здесь - это мой исходный текст моей полностью реализованной задачи Grunt для всех, кто задумывается о работе сEdgeCast API.В моем примере вы обнаружите, что я использую оболочку grunt для выполнения команды curl, которая очищает CDN.

Это закончилось тем, что я потратил часы, пытаясь заставить HTTP-запрос работать в Node,Мне удалось заставить его работать на Ruby и Python, но я не отвечал требованиям этого проекта.

0 голосов
/ 24 мая 2018

Вы можете использовать модуль 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.
});
0 голосов
/ 12 августа 2016

Вы можете попробовать использовать приложение POSTMAN Chrome для вашего запроса, и вы можете сгенерировать код узла js оттуда

0 голосов
/ 11 апреля 2016

Возможно, вы захотите попробовать что-то вроде этого

curl = require('node-curl');
curl('www.google.com', function(err) {
  console.info(this.status);
  console.info('-----');
  console.info(this.body);
  console.info('-----');
  console.info(this.info('SIZE_DOWNLOAD'));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...