ContentType और MimeType का अंतर क्या है


103

जहाँ तक मुझे पता है, वे पूर्ण समान हैं। हालाँकि, कुछ django डॉक्स ब्राउज़ करने पर, मुझे यह कोड मिल गया है:

HttpResponse.__init__(content='', mimetype=None, status=200, content_type='text/html')

जिसने मुझे दोनों को एक दूसरे के साथ होने पर आश्चर्यचकित किया। आधिकारिक डॉक्स समस्या को एक व्यावहारिक तरीके से हल करने में सक्षम था:

content_type mimetype के लिए एक उपनाम है। ऐतिहासिक रूप से, इस पैरामीटर को केवल mimetype कहा जाता था, लेकिन चूंकि यह वास्तव में HTTP सामग्री-प्रकार हेडर में शामिल मूल्य है, इसमें वर्ण सेट एन्कोडिंग भी शामिल हो सकता है, जो इसे केवल MIME प्रकार विनिर्देश से अधिक बनाता है। यदि mimetype निर्दिष्ट किया गया है (कोई नहीं), तो उस मान का उपयोग किया जाता है। अन्यथा, content_type का उपयोग किया जाता है। यदि न तो दिया जाता है, तो DEFAULT_CONTENT_TYPE सेटिंग का उपयोग किया जाता है।

हालाँकि, मुझे यह पर्याप्त नहीं लगता। क्यों हम (लगभग एक ही) चीज़ के लिए 2 अलग-अलग नामकरण का उपयोग करते हैं? क्या "सामग्री-प्रकार" केवल ब्राउज़र अनुरोधों में उपयोग किया जाने वाला नाम है, और इसके बाहर बहुत कम उपयोग के साथ?

हर एक के बीच मुख्य अंतर क्या है, और किसी चीज mimetypeको विरोध के रूप में कब कहना सही है content-type? क्या मैं दयालु और व्याकरण नाज़ी हूँ?

जवाबों:


54

क्यों हम (लगभग एक ही) चीज़ के लिए 2 अलग-अलग नामकरण का उपयोग करते हैं? क्या "सामग्री-प्रकार" केवल ब्राउज़र अनुरोधों में उपयोग किया जाने वाला नाम है, और इसके बाहर बहुत कम उपयोग के साथ?

हर एक के बीच मुख्य अंतर क्या है, और सामग्री-प्रकार के विपरीत कुछ mimetype को कॉल करना कब सही है? क्या मैं दयालु और व्याकरण नाज़ी हूँ?

इसका कारण केवल पिछड़ी संगतता नहीं है, और मुझे डर है कि आमतौर पर उत्कृष्ट Django प्रलेखन इसके बारे में थोड़ा सा लहराती है। MIME (यह वास्तव में कम से कम विकिपीडिया प्रविष्टि पढ़ने लायक है) इंटरनेट मेल और विशेष रूप से SMTP को बढ़ाने में इसकी उत्पत्ति है। वहां से, MIME और MIME- प्रेरित एक्सटेंशन डिज़ाइन ने बहुत से अन्य प्रोटोकॉल (जैसे HTTP यहाँ) में अपना रास्ता खोज लिया है, और अभी भी इसका उपयोग तब किया जा रहा है जब मौजूदा प्रोटोकॉल में नए प्रकार के मेटाडेटा या डेटा को प्रसारित करने की आवश्यकता होती है। दर्जनों RFC हैं जो MIME का उपयोग उद्देश्यों की अधिकता के लिए करते हैं।

विशेष रूप से, Content-Type:कई MIME हेडर में से एक है। "Mimetype" वास्तव में अप्रचलित लगता है, लेकिन MIME का संदर्भ स्वयं नहीं है। यदि आप चाहें तो उस भाग को पिछड़ी-अनुकूलता कहेंगे।

[BTW, यह विशुद्ध रूप से एक शब्दावली समस्या है जिसका व्याकरण से कोई लेना देना नहीं है। "व्याकरण" के तहत प्रत्येक उपयोग प्रश्न को फाइल करना मेरा एक पालतू पशु है। Grrrr।]


49

मैंने हमेशा कंटेंट टाइप को माइम टाइप का सुपरसेट देखा है। एकमात्र अंतर वैकल्पिक चरित्र सेट एन्कोडिंग है। यदि सामग्रीटाइप में वैकल्पिक वर्ण सेट एन्कोडिंग शामिल नहीं है, तो यह माइमाइप के समान है। अन्यथा, mimeType वर्ण सेट एन्कोडिंग अनुक्रम से पहले डेटा है।

ईजी text/html; charset=UTF-8

text/htmlmimeType
;अतिरिक्त पैरामीटर संकेतक
charset=UTF-8है जो वर्ण सेट एन्कोडिंग पैरामीटर है

ईजी application/msword

application/mswordmimeType है
इसमें एक वर्ण सेट एन्कोडिंग नहीं हो सकती है क्योंकि यह एक अच्छी तरह से गठित octet-streamवर्णों को सीधे शामिल नहीं करने का वर्णन करता है।


1
यह सही जवाब है। प्रतिक्रिया mime_type (content_type नहीं) सेट करना चारसेट को ओवरराइड नहीं करता है और यह UTF-8 के रूप में रहता है।
मिको ओक्टमा

कभी-कभी केवल "मीडिया प्रकार" कहा जाता है, MIME प्रकार जैसा कि आप मीडिया के प्रकार कहते हैं। कुछ विशिष्टताओं में हम "पारसेबल माइम प्रकार" शब्द देखेंगे, जिसमें Content-Typeहेडर में गुणों का उपयोग शामिल है । की सिंटेक्स Content-Typeयहां पाया जा सकता: tools.ietf.org/html/rfc2045#section-5.1
जोश Habdas

फिर भी, मेरे विचार में, माइम-टाइप एक बहुत ही संकीर्ण शब्द है जो मेल करने के लिए सीमित है, जबकि सामग्री-प्रकार "सामग्री के प्रकार" के लिए सादा अंग्रेजी है। इसलिए, मेरे विचार text/htmlमें एक सामग्री-प्रकार भी है, भले ही लोग उस MIME को कॉल करते हों। इसके अलावा, नया नाम, media-typeफ़िज़ियर भी है, क्योंकि मीडिया 100 अलग-अलग चीजें हैं। बीबीसी एक मीडिया है! एक डीवीडी एक मीडिया है! और कोई यह तर्क देगा कि डेटा की एक धारा "मीडिया" नहीं है, बल्कि एक "माध्यम" है।
user2173353

4

यदि आप विवरण जानना चाहते हैं तो टिकट 3526 देखें ।

उद्धरण:

HttpResponse कंस्ट्रक्टर के लिए mimetype के लिए एक उपनाम के रूप में content_type जोड़ा गया। यह थोड़ा अधिक सटीक नाम है। साइमन विलीसन के एक पैच के आधार पर। पूरी तरह से पीछे संगत।


0

क्यों हम (लगभग एक ही) चीज़ के लिए 2 अलग-अलग नामकरण का उपयोग करते हैं?

प्रलेखन से आपके उद्धरण के आधार पर पश्चगामी संगतता।


यह ठीक है, मैं इसे django पर जोड़ने के लिए व्यावहारिक कारण समझ गया हूँ। हालांकि, इस सवाल का मूल यह है कि हर कोई दो शब्दों का इतना मिश्रित उपयोग क्यों करता है, और यदि वास्तव में सभी के बाद अंतर है।
फ्रैगोसाउरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.