La question est assez simple. Je souhaite utiliser un serveur Node.js en tant que proxy pour enregistrer, authentifier et transférer les requêtes HTTP vers un serveur HTTP principal (requêtes PUT, GET et DELETE).
Quelle bibliothèque dois-je utiliser à cette fin? J'ai peur de ne pas en trouver un.
resp.setEncoding('utf8');
(ou quel que soit le codage que vous utilisez) pour obtenir des données sous forme de chaînes utf8. Si j'ai bien compris, sinon vous obtiendrez des objets Buffer et vous pourriez avoir des problèmes avec les caractères multi-octets si un caractère multi-octets est divisé en deux morceaux. (Je viens de déboguer un problème connexe pendant un moment)request
beaucoup plus le module npm.Je combinerais node-http-proxy et express .
node-http-proxy prendra en charge un proxy à l'intérieur de votre serveur Web node.js via
RoutingProxy
(voir l'exemple appelé Proxy requests sur un autre serveur http ).Dans votre logique de serveur personnalisée, vous pouvez effectuer une authentification à l'aide d'express. Voir l' exemple d'authentification ici pour un exemple .
La combinaison de ces deux exemples devrait vous donner ce que vous voulez.
la source
Vous pouvez utiliser le
http
module intégré pour faire unhttp.request()
.Cependant, si vous souhaitez simplifier l'API, vous pouvez utiliser un module tel que superagent
la source
node-http-proxy est une excellente solution, comme suggéré par @hross ci-dessus. Si vous n'êtes pas enclin à utiliser node, nous utilisons NGINX pour faire la même chose. Cela fonctionne très bien avec node. Nous l'utilisons par exemple pour traiter les requêtes SSL avant de les transmettre au node. Il peut également gérer les itinéraires de mise en cache et de transfert. Yay!
la source
Vous pouvez utiliser le module http node.js pour ce 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 l'avoir dans ServerRequest.url .
Une fois que vous avez ces informations, vous pouvez passer le serveur HTTP backend et le port dans les options que vous fournirez dans le
http.request()
la source