2013-03-10 21 views
24

実行時にURLを指定すると、ファイルをダウンロードする必要があるNode JSアプリケーションがあります。ノードJS: `http.get`と` https.get`の自動選択

URLはhttp://またはhttps://のいずれかです。

さまざまなプロトコルに最適な方法を教えてください。私が持っている瞬間

var http = require('http'); 
var https = require('https'); 

var protocol = (parsedUrl.protocol == 'https:' ? https : http); 
protocol.get(parsedUrl, function(res) { 
    ... 
}); 

...しかし、それは不格好な感じ。

ありがとうございます!

+2

:それはあなたのサーバー側のノードアプリです別のサーバーからファイルをダウンロードする必要があるアプリケーション、またはNodeアプリケーションから何かをダウンロードする必要があるアプリケーション? –

+0

別のサーバーからダウンロードしているサーバー側のノードアプリケーション。ありがとう! –

答えて

13

requestneedleのように、代わりに使用できるモジュールがたくさんあります。彼らは、どのプロトコルを使うべきか、そして(もし必要であれば)リダイレクトを扱う方法を理解するでしょう。

+1

ありがとう!私はNodeが何か組み込みを持っているかもしれないと思っていましたが、心配する必要はありません。リクエストとニードルの方に私を向けると感謝しています。 –

+0

おかげでそれは私にとっても役に立ちました – cooler

17

私はいくつかの明確化を同様の必要性があったが、私は(わずかに異なっている)、次のコードを持って、本格的な要求や針のライブラリを必要としなかった

var adapterFor = (function() { 
    var url = require('url'), 
    adapters = { 
     'http:': require('http'), 
     'https:': require('https'), 
    }; 

    return function(inputUrl) { 
    return adapters[url.parse(inputUrl).protocol] 
    } 
}()); 
//.. and when I need it 
adapterFor(url).get(url, ...) 
関連する問題