Как сделать внешние HTTP-запросы с помощью Node.js

Вопрос довольно прост. Я хочу использовать сервер Node.js в качестве прокси для регистрации, аутентификации и перенаправления HTTP-запросов на серверный HTTP-сервер (запросы PUT, GET и DELETE).

Какую библиотеку я должен использовать для этой цели? Боюсь, я не могу найти его.

Ответ 1

NodeJS поддерживает http.request как стандартный модуль: http://nodejs.org/docs/v0.4.11/api/http.html#http.request

var http = require('http');

var options = {
  host: 'example.com',
  port: 80,
  path: '/foo.html'
};

http.get(options, function(resp){
  resp.on('data', function(chunk){
    //do something with chunk
  });
}).on("error", function(e){
  console.log("Got error: " + e.message);
});

Ответ 2

Я бы объединил node-http-proxy и express.

node -http-proxy будет поддерживать прокси-сервер внутри вашего веб-сервера node.js через RoutingProxy (см. пример с запросами прокси в другом http-сервере).

Внутри пользовательской логики сервера вы можете выполнить аутентификацию с помощью экспресс. См. образец auth здесь для примера.

Объединение этих двух примеров должно дать вам то, что вы хотите.

Ответ 3

Недавно я обнаружил REQUESTIFY.

Получить запрос:

requestify.get('http://example.com').then(function(response) {
    // Get the response body
    response.getBody();
});

Сообщение в Json:

requestify.post('http://example.com', {
        hello: 'world'
     })
        .then(function(response) {
            // Get the response body (JSON parsed or jQuery object for XMLs)
            response.getBody();

            // Get the raw response body
            response.body;
        });

Надеюсь, что это поможет

Ответ 4

Вы можете использовать встроенный модуль http для выполнения http.request().

Однако, если вы хотите упростить API, вы можете использовать модуль, например superagent

Ответ 5

node -http-proxy - отличное решение, как было предложено выше @hross. Если вы не устарели при использовании node, мы используем NGINX, чтобы сделать то же самое. Он отлично работает с node. Мы используем его, например, для обработки запросов SSL перед отправкой их на node. Он также может обрабатывать маршруты кеширования и пересылки. Ура!

Ответ 6

Для этого вы можете использовать node.js http module. Вы можете проверить документацию на Node.js HTTP.

Вам нужно будет также передать строку запроса на другой HTTP-сервер. Вы должны иметь это в ServerRequest.url.

После того, как у вас есть такая информация, вы можете передать серверу HTTP и порт в качестве опций, которые вы предоставите в http.request()