Node.jsを使用して外部HTTPリクエストを作成する方法[クローズ]


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文字列として取得するには、追加(または使用しているエンコーディング)をお勧めします。私が正しく理解していれば、それ以外の場合はBufferオブジェクトを取得し、マルチバイト文字が2つのチャンクに分割されているとマルチバイト文字で問題が発生する可能性があります。(しばらくの間、関連する問題をデバッグしました)
Touko 2014年

8
私は実際にrequestnpmモジュールをもっとたくさん使い始めました。
chovy 2014年

7

node-http-proxyexpressを組み合わせます

node-http-proxyは、を介してnode.js Webサーバー内のプロキシをサポートしますRoutingProxy別のhttpサーバー内のプロキシリクエストと呼ばれる例を参照)。

カスタムサーバーロジック内で、Expressを使用して認証を行うことができます。例については、こちら認証サンプルを参照してください。

これらの2つの例を組み合わせると、必要なものが得られます。


5

組み込みhttpモジュールを使用してを実行できhttp.request()ます。

ただし、APIを簡素化したい場合は、スーパーエージェントなどのモジュールを使用できます。


3
確かに多くのsanerapi。低レベルのAPIのみを提供することでノードを非難することはありませんが、データのチャンクを処理し始めるのは単純に面倒です。
Laurent Bourgault-Roy 2013

1

上記の@hrossによって提案されたように、node-http-proxyは優れたソリューションです。ノードの使用に行き詰まっていない場合は、NGINXを使用して同じことを行います。それはノードで本当にうまく機能します。たとえば、SSLリクエストをノードに転送する前に処理するために使用します。また、キャッシュおよび転送ルートを処理することもできます。わーい!


0

これを行うには、node.jshttpモジュールを使用できます。Node.jsHTTPでドキュメントを確認できます

クエリ文字列も他のHTTPサーバーに渡す必要があります。ServerRequest.urlにそれがあるはずです。

これらの情報を入手したら、バックエンドHTTPサーバーとポートを、で提供するオプションに渡すことができます。 http.request()

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.