2016-03-27 3 views
8

में करना चाहिए, मैं सोच रहा था कि मुझे नया सेवावेक्स बनाना चाहिए और इसे http.Server पर पंजीकृत करना चाहिए या मुझे http.HandleFunc और http.Handler सीधे आमंत्रित करना चाहिए?क्या मुझे सीधे सेवमक्स या http का उपयोग गोलांग

मुझे लगता है कि एक सेवमक्स के साथ मार्ग बेहतर है क्योंकि http.HandleFunc स्पष्ट रूप से HTTP पैकेज की वैश्विक स्थिति के साथ गड़बड़ है, जिसे गो में खराब अभ्यास माना जाता है। हालांकि, कई ट्यूटोरियल में, यहां तक ​​कि आधिकारिक वाले, मैं अक्सर उपयोग किए जाने वाले http.HandleFunc मार्ग देखता हूं।

यह मुझे आश्चर्यचकित करता है: होने पर http.HandleFunc का उपयोग क्यों करना चाहिए? मुझे पता है कि सेर्वेमक्स के कुछ फायदे हैं (उदाहरण के लिए आप हर समय उपसर्ग को दोहराए बिना घोंसला कर सकते हैं) लेकिन मुझे आश्चर्य है कि मुझे कभी भी http.HandleFunc मल्टीप्लेक्सर पर क्यों चुनना चाहिए, खासकर HandleFuncServeMux आंतरिक रूप से उपयोग करता है।

संपादित करें: टिप्पणियों में वादा किया गया है, मैंने Golang-dev पर अतिरिक्त (और बेकार आईएमओ फ़ंक्शंस) को बहिष्कृत करने के लिए कहा है और उन्होंने कहा (ठीक है, व्यक्ति ने कहा नहीं)। Here is the link.

+0

(हैं मैं यह भी कहना चाहता था कि यह एक अच्छा सवाल है, और भविष्य में दूसरों के लिए उपयोगी है, क्योंकि यह पहले आया है) – elithrar

+0

एलिथ्रार: यही कारण है कि मैंने इसे यहां पूछा। मुझे Google पर कुछ भी नहीं मिला। इमो, 'http.HandleFunc' और' http.Handle' को बहिष्कृत किया जाना चाहिए, फिर। 'मक्स' और' सर्वर' का उपयोग केवल 2 और लाइनें जोड़ता है और अस्पष्टता हमेशा खराब होती है, खासकर यदि अधिक स्पष्ट तरीका "खराब तरीका" है। – Matt3o12

+0

गो 1 संगतता वादा हटाने की अनुमति नहीं देता है, इसलिए हम "2.0" तक (उनके द्वारा लंबे समय तक बंद होने तक) उनके साथ 'अटक गए' हैं। – elithrar

उत्तर

4

आप सही रास्ते पर हैं: आपको उल्लिखित कारणों से अपने ServeMux को तुरंत चालू करना चाहिए।

DefaultServeMux का उपयोग net/http/pprof का उपयोग करते समय प्रोफाइलिंग एंडपॉइंट्स को उजागर करने का जोखिम भी चलाता है, क्योंकि वे DefaultServeMux से जुड़े होते हैं।

http.Handle|HandleFunc सुविधा तरीकों, और शायद उदाहरण कोड में बॉयलरप्लेट नीचे रखने के लिए उपयोगी है, लेकिन एक ServeMux बनाने आप इसे लपेटो करने की क्षमता देता है, एक और भीतर यह घोंसला, एक निर्माता से यह निर्यात, आदि

संबंधित मुद्दे