Как сделать удаленный вызов REST внутри Node.js? любой CURL? - PullRequest
171 голосов
/ 13 апреля 2011

В Node.js , кроме использования дочернего процесса для вызова CURL , существует ли способ сделать вызов CURL удаленному серверу REST API иполучить возвращаемые данные?

Мне также нужно настроить заголовок запроса для удаленного вызова REST , а также строку запроса в GET (или POST).

Я нашел это: http://blog.nodejitsu.com/jsdom-jquery-in-5-lines-on-nodejs

, но он не показывает пути к строке запроса POST.

Ответы [ 13 ]

2 голосов
/ 27 июня 2016

Если у вас Node.js 4.4+, посмотрите на reqclient , он позволяет вам совершать звонки и регистрировать запросы в стиле cURL , так что вы можете легко проверить и воспроизводить звонки вне приложения.

Возвращает Обещание объектов вместо передачи простых обратных вызовов, так что вы можете обработать результат более "fashion" способом, цепочкой результата легко, и обрабатывать ошибки стандартным способом. Также удаляет множество стандартных конфигураций для каждого запроса: базовый URL-адрес, время ожидания, формат содержимого, заголовки по умолчанию, параметры и привязку запроса в URL-адресе, а также основные функции кэша.

Это пример того, как его инициализировать, выполнить вызов и зарегистрировать операцию в стиле curl :

var RequestClient = require("reqclient").RequestClient;
var client = new RequestClient({
    baseUrl:"http://baseurl.com/api/", debugRequest:true, debugResponse:true});
client.post("client/orders", {"client": 1234, "ref_id": "A987"},{"x-token": "AFF01XX"});

Это войдет в консоль ...

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

А когда ответ возвращается ...

[Response   client/orders]<- Status 200 - {"orderId": 1320934}

Это пример того, как обрабатывать ответ с объектом обещания:

client.get("reports/clients")
  .then(function(response) {
    // Do something with the result
  }).catch(console.error);  // In case of error ...

Конечно, он может быть установлен с: npm install reqclient.

1 голос
/ 07 августа 2014

Вы можете использовать curlrequest , чтобы легко установить, какое время запроса вы хотите сделать ... вы даже можете установить заголовки в опциях на " fake " вызов браузера.

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

Если вы реализуете данные формы, для получения дополнительной информации (https://tanaikech.github.io/2017/07/27/multipart-post-request-using-node.js):

var fs = require('fs');
var request = require('request');
request.post({
   url: 'https://slack.com/api/files.upload',
    formData: {
        file: fs.createReadStream('sample.zip'),
        token: '### access token ###',
        filetype: 'zip',
        filename: 'samplefilename',
        channels: 'sample',
        title: 'sampletitle',
    },
}, function(error, response, body) {
    console.log(body);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...