Cómo realizar solicitudes HTTP externas con Node.js [cerrado]


84

La pregunta es bastante simple. Quiero usar un servidor Node.js como proxy para registrar, autenticar y reenviar consultas HTTP a un servidor HTTP backend (solicitudes PUT, GET y DELETE).

¿Qué biblioteca debo usar para ese propósito? Me temo que no puedo encontrar uno.

Respuestas:


136

NodeJS admite http.request como módulo estándar: 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
Recomendaría agregar resp.setEncoding('utf8');(o cualquier codificación que esté usando) para obtener datos como cadenas utf8. Si lo he entendido bien, de lo contrario obtendrá objetos Buffer y podría terminar teniendo problemas con los caracteres de varios bytes si un carácter de varios bytes se divide en dos partes. (Acabo de depurar un problema relacionado por un tiempo)
Touko

8
De hecho, comencé a usar el requestmódulo npm mucho más.
Chovy

7

Combinaría node-http-proxy y express .

node-http-proxy admitirá un proxy dentro de su servidor web node.js a través de RoutingProxy(consulte el ejemplo llamado Solicitudes de proxy dentro de otro servidor http ).

Dentro de la lógica de su servidor personalizado, puede realizar la autenticación mediante express. Vea el ejemplo de autenticación aquí para ver un ejemplo .

La combinación de esos dos ejemplos debería darle lo que desea.


5

Puede utilizar el httpmódulo integrado para realizar unahttp.request() .

Sin embargo, si desea simplificar la API, puede usar un módulo como superagent


3
De hecho, una API mucho más cuerda. No culpo al nodo por proporcionar solo una API de bajo nivel, pero comenzar a manejar fragmentos de datos es simplemente molesto.
Laurent Bourgault-Roy

1

node-http-proxy es una gran solución como sugirió @hross arriba. Si no está seguro de usar el nodo, usamos NGINX para hacer lo mismo. Funciona muy bien con node. Lo usamos, por ejemplo, para procesar solicitudes SSL antes de reenviarlas al nodo. También puede manejar rutas de reenvío y almacenamiento en caché. ¡Hurra!


0

Puede usar el módulo http de node.js para hacer eso. Puede consultar la documentación en Node.js HTTP .

Debería pasar la cadena de consulta también al otro servidor HTTP. Deberías tener eso en ServerRequest.url .

Una vez que tenga esa información, puede pasar al servidor HTTP backend y al puerto las opciones que proporcionará en el http.request()

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.