Як робити зовнішні HTTP-запити за допомогою Node.js [закрито]


84

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

Яку бібліотеку мені використовувати для цієї мети? Боюсь, що не можу знайти.

Відповіді:


136

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);
});

10
Я б рекомендував додати resp.setEncoding('utf8');(або будь-яке інше кодування, яке ви використовуєте), щоб отримати дані у вигляді рядків utf8. Якщо я правильно зрозумів, інакше ви отримаєте об'єкти буфера, і в результаті можуть виникнути проблеми з багатобайтовими символами, якщо багатобайтовий символ розділений на два шматки. (Тільки якийсь час налагоджував пов’язану проблему)
Туко,

8
Я насправді почав використовувати requestмодуль npm набагато більше.
човий

7

Я б поєднав node-http-proxy та express .

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

Усередині вашої нестандартної логіки сервера ви можете виконати автентифікацію за допомогою Express Див. Зразок auth для прикладу .

Поєднання цих двох прикладів має дати вам те, що ви хочете.


5

Ви можете використовувати вбудований httpмодуль, щоб зробити http.request().

Однак якщо ви хочете спростити API, ви можете використовувати такий модуль, як суперагент


3
Насправді набагато більш здоровий api. Я не звинувачую вузол у тому, що він надає лише API низького рівня, але початок обробляти фрагменти даних просто дратує.
Лоран Бурго-Рой

1

node-http-proxy - чудове рішення, як було запропоновано @hross вище. Якщо ви не готові використовувати node, ми використовуємо NGINX, щоб зробити те саме. Це дуже добре працює з вузлом. Ми використовуємо його, наприклад, для обробки запитів SSL перед пересиланням їх на вузол. Він також може обробляти кешування та пересилання маршрутів. Ага!


0

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

Вам також потрібно буде передати рядок запиту іншому серверу HTTP. Ви повинні мати це в ServerRequest.url .

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.