节点JS:自动select“http.get”与“https.get”

我有一个节点JS应用程序,需要下载一个文件,在运行时给定一个URL。

该URL可能是http://https://

我如何最好地迎合不同的协议?

目前我有:

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

…但感觉笨重。

谢谢!

有一堆你可以使用的模块,如请求或针 。 他们会找出使用哪个协议,以及如何处理redirect(如果需要)等。

我有类似的需求,但不需要完整的请求或针库,我有以下代码(这是稍有不同)

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