82 votes

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

La question est assez simple. Je veux utiliser un serveur Node.js comme proxy pour enregistrer, authentifier et transmettre des requêtes HTTP à un serveur HTTP dorsal (requêtes PUT, GET et DELETE).

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

135voto

chovy Points 8012

NodeJS supporte http.request comme un 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);
});

7voto

hross Points 2408

Je combinerais node-http-proxy y express .

node-http-proxy supportera un proxy à l'intérieur de votre serveur web node.js par l'intermédiaire de RoutingProxy (voir l'exemple intitulé Requêtes proxy dans un autre serveur http ).

Dans votre logique de serveur personnalisée, vous pouvez effectuer l'authentification en utilisant express. Voir le exemple d'authentification ici pour un exemple .

En combinant ces deux exemples, vous devriez obtenir ce que vous voulez.

5voto

evilcelery Points 7371

Vous pouvez utiliser la fonction intégrée http pour faire un http.request() .

Cependant, si vous souhaitez simplifier l'API, vous pouvez utiliser un module tel que superagent

1voto

Jamund Ferguson Points 6338

Node-http-proxy est une excellente solution, comme l'a suggéré @hross ci-dessus. Si vous n'êtes pas décidé à utiliser node, nous utilisons NGINX pour faire la même chose. Il fonctionne très bien avec node. Nous l'utilisons par exemple pour traiter les requêtes SSL avant de les transmettre à node. Il peut également gérer le cache et le transfert de routes. Bravo !

0voto

momo Points 7728

Vous pouvez utiliser le module http de node.js pour le faire. Vous pouvez consulter la documentation à l'adresse Node.js HTTP .

Vous devez é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 indiquer le serveur HTTP et le port du backend dans les options que vous fournirez dans l'option http.request()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X