it-swarm.com.de

Was ist der Unterschied zwischen ContentType und MimeType?

Soweit ich weiß, sind sie absolut gleich. Beim Durchsuchen einiger Django docs habe ich jedoch folgenden Code gefunden:

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

was mich überrascht, dass die beiden gut miteinander auskommen. Die offiziellen Dokumente konnten das Problem auf praktische Weise lösen:

content_type ist ein Alias ​​für mimetype. In der Vergangenheit wurde dieser Parameter nur als MIME-Typ bezeichnet. Da dies jedoch der Wert ist, der im HTTP-Content-Type-Header enthalten ist, kann er auch die Zeichensatzcodierung enthalten, sodass er mehr als nur eine MIME-Typspezifikation ist. Wenn der Mimetyp angegeben ist (nicht None), wird dieser Wert verwendet. Andernfalls wird content_type verwendet. Wenn keines angegeben ist, wird die Einstellung DEFAULT_CONTENT_TYPE verwendet.

Ich finde es jedoch nicht klärend genug. Warum verwenden wir zwei unterschiedliche Bezeichnungen für (fast dasselbe) Ding? Ist "Content-Type" nur ein Name, der in Browser-Anfragen verwendet wird und außerhalb davon nur sehr wenig verwendet wird?

Was ist der Hauptunterschied zwischen den beiden und wann ist es richtig, etwas zu nennen mimetype im Gegensatz zu content-type? Bin ich schade und Grammatik-Nazi?

92
Frangossauro

Warum verwenden wir zwei unterschiedliche Bezeichnungen für (fast dasselbe) Ding? Ist "Content-Type" nur ein Name, der in Browser-Anfragen verwendet wird und außerhalb davon nur sehr wenig verwendet wird?

Was ist der Hauptunterschied zwischen den einzelnen und wann ist es richtig, etwas Mimetypisches im Gegensatz zum Inhaltstyp zu nennen? Bin ich schade und Grammatik-Nazi?

Der Grund ist nicht nur die Abwärtskompatibilität, und ich befürchte, dass die normalerweise exzellente Django Dokumentation ein bisschen wellenförmig ist. MIME (es lohnt sich, zumindest den Wikipedia-Eintrag zu lesen) hat seinen Ursprung in der Erweiterung von Internet-E-Mails und speziell von SMTP. Von dort aus hat das MIME- und MIME-inspirierte Erweiterungsdesign Eingang in viele andere Protokolle gefunden ( B. HTTP hier) und wird immer noch verwendet, wenn neue Arten von Metadaten oder Daten in einem vorhandenen Protokoll übertragen werden müssen.Es gibt Dutzende von RFCs, in denen MIME für eine Vielzahl von Zwecken verwendet wird.

Insbesondere Content-Type: ist einer von mehreren MIME-Headern. "Mimetype" klingt zwar veraltet, ein Verweis auf MIME selbst jedoch nicht. Nennen Sie diesen Teil Rückwärtskompatibilität, wenn Sie so wollen.

Übrigens handelt es sich hier nur um ein Terminologieproblem, das mit Grammatik überhaupt nichts zu tun hat. Jede Verwendungsfrage unter "Grammatik" abzulegen, ist eine meiner Lieblingsaufgaben. Grrrr.]

51
chryss

Ich habe contentType immer als eine Obermenge von mimeType angesehen. Der einzige Unterschied ist die optionale Zeichensatzkodierung. Wenn der contentType keine optionale Zeichensatzkodierung enthält, ist er mit einem mimeType identisch. Andernfalls handelt es sich bei mimeType um die Daten vor der Zeichensatzcodierungssequenz.

Z.B. text/html; charset=UTF-8

text/html Ist der mimeType
; Ist der zusätzliche Parameterindikator
charset=UTF-8 Ist der Zeichensatzkodierungsparameter

Z.B. application/msword

application/msword Ist der mimeType
Es kann keine Zeichensatzcodierung haben, da es ein wohlgeformtes octet-stream Beschreibt, das keine Zeichen direkt enthält.

41
Reggie Carey

Wenn Sie die Details wissen möchten, sehen Sie Karte 526 .

Zitat:

Content_type wurde als Alias ​​für mimetype zum HttpResponse-Konstruktor hinzugefügt. Es ist ein etwas genauerer Name. Basiert auf einem Patch von Simon Willison. Voll abwärtskompatibel.

4
Shome Stoned

Warum verwenden wir zwei unterschiedliche Bezeichnungen für (fast dasselbe) Ding?

Abwärtskompatibilität, basierend auf Ihrem Zitat aus der Dokumentation.

0
Brian S