2013-03-10 10 views
24

Mam aplikację JS węzła, która musi pobrać plik, podając URL w czasie wykonywania.Węzeł JS: Automatyczny wybór `http.get` kontra` https.get`

Adres URL może być http:// lub https://.

Jak najlepiej obsłużyć różne protokoły?

W tej chwili mam:

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

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

... ale czuje się niezgrabne.

Dzięki!

+2

pewne wyjaśnienia: czy jest to aplikacja boczny węzeł serwera który musi pobrać plik z innego serwera lub aplikacji, która musi pobrać coś ze swojej aplikacji węzła? –

+0

Aplikacja węzła po stronie pobieranej z innego serwera. Dzięki! –

Odpowiedz

13

Istnieje kilka modułów, z których można skorzystać, np. request lub needle. Dowiesz się, który protokół użyć i jak obsługiwać przekierowania (jeśli są wymagane) i takie.

+1

Dzięki! Miałem nadzieję, że Node może mieć coś wbudowanego, ale nie martwić się. Doceniam, że wskazałeś mi drogę do Żądania i Igły - wyglądają świetnie. –

+0

dziękuję, że to mi pomogło – cooler

17

miałem podobną potrzebę, ale nie potrzebują pełnowartościowy bibliotek żądanie lub igieł, mam następujący kod (który jest nieco inny)

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