web-dev-qa-db-fra.com

Comment faire des requêtes HTTP externes avec Node.js

La question est assez simple. Je souhaite utiliser un serveur Node.js en tant que proxy pour consigner, authentifier et transmettre des requêtes HTTP à un serveur HTTP principal (requêtes PUT, GET et DELETE).

Quelle bibliothèque devrais-je utiliser à cette fin? J'ai bien peur de ne pas en trouver un.

82
Pierre

NodeJS prend en charge http.request en tant que module standard: 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);
});
134
chovy

Je combinerais noeud-http-proxy et express .

node-http-proxy prendra en charge un proxy sur votre serveur Web node.js via RoutingProxy (voir l'exemple intitulé Demandes de proxy sur un autre serveur http ).

Dans la logique de votre serveur personnalisé, vous pouvez effectuer une authentification à l’aide de express. Voir le exemple d'auth ici pour un exemple .

La combinaison de ces deux exemples devrait vous donner ce que vous voulez.

7
hross

Vous pouvez utiliser le module intégré http pour effectuer une http.request().

Toutefois, si vous souhaitez simplifier l’API, vous pouvez utiliser un module tel que superagent

5
evilcelery

node-http-proxy est une excellente solution, comme suggéré par @hross ci-dessus. Si vous n'êtes pas sur l'utilisation de noeud, nous utilisons NGINX pour faire la même chose. Cela fonctionne vraiment bien avec le noeud. Nous l'utilisons par exemple pour traiter les requêtes SSL avant de les transmettre au nœud. Il peut également gérer la mise en cache et le transfert des itinéraires. Yay!

1
Jamund Ferguson

Vous pouvez utiliser le module http node.js pour le faire. Vous pouvez consulter la documentation sur Node.js HTTP .

Vous devrez également transmettre la chaîne de requête à l'autre serveur HTTP. Vous devriez avoir cela dans ServerRequest.url .

Une fois que vous avez ces informations, vous pouvez passer le serveur HTTP principal et le port dans les options que vous allez fournir dans la http.request()

0
momo