2013-03-10 40 views
24

我有一個Node JS應用程序,需要下載一個文件,並在運行時給出一個URL。Node JS:自動選擇`http.get` vs`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應用程序下載某個應用程序的應用程序? – 2013-03-10 01:31:22

+0

從另一臺服務器下載的服務器端節點應用程序。謝謝! – 2013-03-11 02:40:10

回答

13

您可以使用一堆模塊,例如requestneedle。他們會找出使用哪種協議,以及如何處理重定向(如果需要)等。

+1

謝謝!我希望Node可能有內置的東西,但不用擔心。我感謝你指點我的要求和針 - 他們看起來不錯。 – 2013-03-15 04:58:08

+0

感謝這對我也有幫助 – cooler 2015-04-28 18:34:03

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, ...)