2010-08-10 11 views
78

Por lo que yo sé, son absolutamente iguales. Sin embargo, la navegación de algunos documentos django, he encontrado este pedazo de código:Cuál es la diferencia de ContentType y MimeType

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

que me sorprende los dos para llevarse bien entre sí. Los documentos oficiales pudieron resolver el problema de manera práctica:

content_type es un alias para mimetype. Históricamente, este parámetro era sólo llamados tipo MIME, pero ya que este es realmente el valor incluido en el cabecera HTTP Content-Type, que también puede incluyen la codificación de juego de caracteres, que hace que sea más que un tipo MIME especificación. Si mimetype es especificado (no Ninguno), ese valor es utilizado. De lo contrario, se usa content_type. Si no se proporciona ninguno, se utiliza la configuración DEFAULT_CONTENT_TYPE.

Sin embargo, no me parece aclarar lo suficiente. ¿Por qué usamos 2 nombres diferentes para (casi lo mismo) cosa? ¿Es "Content-Type" solo un nombre utilizado en las solicitudes del navegador y con muy poco uso fuera de él?

¿Cuál es la diferencia principal entre cada uno, y cuándo es correcto llamar a algo mimetype en comparación con content-type? ¿Estoy siendo ruin y gracioso nazi?

Respuesta

42

¿Por qué utilizamos 2 nombres diferentes para (casi lo mismo)? ¿Es "Content-Type" solo un nombre utilizado en las solicitudes del navegador , y con muy poco uso fuera de este?

¿Cuál es la principal diferencia entre el cada uno, y cuando es el adecuado para llamar algo tipo MIME en lugar de tipo de contenido? ¿Estoy siendo ruin y gramática nazi?

La razón no es sólo la compatibilidad hacia atrás, y me temo que la normalmente excelente documentación de Django es un poco ondulado mano sobre él. MIME (realmente vale la pena leer al menos la entrada de Wikipedia) tiene su origen en la extensión de correo de Internet, y específicamente SMTP. A partir de ahí, el diseño de extensión inspirado en MIME y MIME ha encontrado su camino en muchos otros protocolos (como HTTP aquí) y todavía se usa cuando se deben transmitir nuevos tipos de metadatos o datos en un protocolo existente. Hay docenas de RFC que discuten MIME utilizado para una plétora de propósitos.

Específicamente, Content-Type: es uno entre varios encabezados MIME. "Mimetype" realmente suena obsoleto, pero una referencia a MIME no lo es. Llame a esa parte de compatibilidad hacia atrás, si lo desea.

[Por cierto, este es un problema de terminología que no tiene nada que ver con la gramática.Presentar todas las preguntas de uso bajo "gramática" es una de mis preocupaciones. Grrrr.]

0

¿Por qué utilizamos 2 nombres diferentes para (casi lo mismo) cosa?

Compatibilidad con versiones anteriores, en función de su cita de la documentación.

+0

eso es bueno, tengo entender la razón practico para añadir que en Django. Sin embargo, el núcleo de la pregunta es por qué * todo el mundo * usa las dos palabras tan mezcladas, y si realmente hay una diferencia después de todo. – Frangossauro

4

Si desea conocer los detalles ver 3526 billete.

Cita:

Agregado content_type como un alias para tipo MIME a la HttpResponse constructor. Es un nombre un poco más preciso. Basado en un parche de Simon Willison. Totalmente al revés compatible.

27

Siempre he visto contentType como un superconjunto de mimeType. La única diferencia es la codificación del juego de caracteres opcional. Si contentType no incluye una codificación de juego de caracteres opcional, entonces es idéntico a un mimeType. De lo contrario, mimeType es la información anterior a la secuencia de codificación del juego de caracteres.

POR EJEMPLO text/html; charset=UTF-8

text/html es el mimeType
; es el indicador de parámetros adicionales
charset=UTF-8 es el conjunto de parámetros de codificación de caracteres

E.G. application/msword

application/msword es el mimeType
No puede tener una codificación de conjunto de caracteres, ya que describe directamente un bien formadas octet-stream caracteres no comprenden.

+0

Esta es la respuesta correcta. Configuración mime_type respuesta (no CONTENT_TYPE) no anula juego de caracteres y se mantiene como UTF-8. –

+0

A veces simplemente llamado "tipo de medio", el tipo MIME es como dices el tipo de los medios de comunicación. En ciertas especificaciones veremos el término "tipo MIME apta para su procesamiento", que incluye el uso de las propiedades en el 'cabecera Content-type'. Sintaxis de Content-type' se puede encontrar aquí: https://tools.ietf.org/html/rfc2045#section-5.1 –

Cuestiones relacionadas