2013-03-10 5 views
24

मेरे पास एक नोड जेएस ऐप है जिसे फ़ाइल डाउनलोड करने की आवश्यकता है, जिसे रन-टाइम पर एक यूआरएल दिया जाता है।नोड जेएस: 'http.get` बनाम' https.get` बनाम स्वचालित चयन

यूआरएल या तो http:// या https:// हो सकता है।

मैं विभिन्न प्रोटोकॉल के लिए सबसे अच्छा कैसे पूरा करूं?

फिलहाल मेरे पास है:

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

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

... लेकिन यह भद्दा लगता है।

धन्यवाद!

+2

कुछ स्पष्टीकरण है: यह आपके सर्वर साइड नोड एप्लिकेशन है जिसे किसी अन्य सर्वर से फ़ाइल डाउनलोड करने की आवश्यकता है, या एक एप्लिकेशन जिसे आपके नोड ऐप से कुछ डाउनलोड करने की आवश्यकता है? –

+0

सर्वर-साइड नोड ऐप जो किसी अन्य सर्वर से डाउनलोड हो रहा है। धन्यवाद! –

उत्तर

13

ऐसे मॉड्यूल का एक समूह है जिसका आप उपयोग कर सकते हैं, जैसे request या needle। वे पता लगाएंगे कि कौन से प्रोटोकॉल का उपयोग करना है, और रीडायरेक्ट को कैसे संभालना है (यदि आवश्यक हो) और ऐसा।

+1

धन्यवाद! मैं उम्मीद कर रहा था कि नोड में कुछ अंतर्निहित हो, लेकिन चिंता न करें। मैं आपको अनुरोध और सुई की ओर इशारा करते हुए सराहना करता हूं - वे बहुत अच्छे लगते हैं। –

+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, ...) 
संबंधित मुद्दे