2013-03-10 2 views
24

Ho un'app Nodo JS che deve scaricare un file, dato un URL in fase di esecuzione.Nodo JS: selezione automatica di `http.get` vs` https.get`

L'URL può essere http:// o https://.

Come posso soddisfare al meglio i diversi protocolli?

Al momento ho:

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

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

... ma si sente goffa.

Grazie!

+2

Alcuni chiarimenti: è il server Nodo lato app che deve scaricare un file da un altro server o un'applicazione che deve scaricare qualcosa dall'app Node? –

+0

App Nodo lato server che sta scaricando da un altro server. Grazie! –

risposta

13

C'è un gruppo di moduli che è possibile utilizzare come request o needle. Scopriranno quale protocollo utilizzare e come gestire i reindirizzamenti (se necessario) e così via.

+1

Grazie! Speravo che Node potesse avere qualcosa di integrato, ma non preoccuparti. Apprezzo che tu mi abbia indirizzato verso Request e Needle: sono fantastici. –

+0

grazie anche a me è stato utile – cooler

17

ho avuto una simile esigenza, ma non ha bisogno delle librerie di richiesta o ad aghi in piena regola, ho il seguente codice (che è leggermente diverso)

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