2008-12-01 23 views
74

¿Cuál es el tipo MIME más apropiado para usar al enviar datos estructurados con YAML a través de HTTP?tipo de mime YAML?

Una explicación de por qué una opción dada es la más apropiada sería muy apreciada.

No hay registros application type o text type que pueda ver.

Ejemplo:

> GET /example.yaml 

< Content-Type: ???? 
< 
< --- # Favorite movies 
< - Casablanca 
< - North by Northwest 
< - Notorious 

posibles opciones:

text/yaml 
text/x-yaml 
application/yaml 
application/x-yaml 

Respuesta

42

rubí en los carriles utiliza application/x-yaml con una alternativa de texto/yaml (source).

Creo que es solo una cuestión de convención, no hay técnico por qué, afaict.

+0

extraño, google para "yaml mime" da un enlace de ruby ​​como primer golpe, con texto/x-yaml y sin hombres aplicación/x-yaml – Greg

+51

Esto no es muy cierto.Los tipos de MIME que comienzan con 'text /' deben procesarse como ISO-8859-1 a menos que otro tipo de MIME se declare explícitamente (por ejemplo, 'text/html; charset = utf-8'). Los tipos MIME que comienzan con 'application /' se procesan como UTF-8 a menos que otro tipo MIME se declare explícitamente. Por ejemplo, 'text/x-yaml' no puede usar caracteres UTF-8 mientras' text/x-yaml; charset = utf-8' y 'application/x-yaml' pueden. IIRC, esto se define en RFC 3023. –

+0

@Ryan: Gracias, gran información. ¿Se aplica a YAML? No es XML ... –

14

diría texto/x-yaml:

texto a través de la aplicación porque es una

x-yaml legible sobre yaml porque no ha sido aceptado en la lista registrada de tipos MIME .

Editar: desde el RFC 3023 (Tipos de papel XML):

el tipo de soporte de primer nivel "texto" tiene algunas restricciones en entidades MIME y que se describen en [RFC2045] y [RFC2046 ] En particular, la familia UTF-16, UCS-4 y UTF-32 no están permitidas (excepto HTTP [RFC2616], que usa un mecanismo similar a MIME ).

Interesante ... No estoy seguro de lo que significa, pero es algo para pensar.

+1

Es legible por humanos, pero su intención es comunicar aplicaciones ... XML está bajo la aplicación –

+0

Y también en el texto. Parece que tendrías que tener ambos text/x-yaml y application/x-yaml ... http://www.rfc-editor.org/rfc/rfc3023.txt –

+0

Por lo que vale, esto es lo que Django's La implementación de REST de TastyPie lo entiende. –

-10

Sé que esto es feo, pero use texto/simple si desea mostrarlo en un navegador y tenerlo formateado correctamente; todo lo anterior tendrá una descarga predeterminada en IE o Firefox.

5

No se recomiendan los tipos de medios "x-", consulte RFC 4288, Section 3.4. Lo correcto es usar el árbol personal, el árbol de proveedores o intentar realmente un registro del tipo de medio adecuado.

+0

Eso sería 'application/vnd.yaml' o' text/vnd.yaml' (el texto parece mejor) – wires

+0

No del todo cierto también. El único árbol de subtipos que se debe usar sin registrarse con IANA es 'x'. 'vnd' y' prs.' requieren registro. Ver https://tools.ietf.org/html/rfc6838#section-3.2 y https://tools.ietf.org/html/rfc6838#section-3.3. – aef

11

Aunque otra respuesta fue aceptada, por favor refiérase a esta Proposed media type registration for YAML hilo en la lista de correo IANA para la revisión de Tipo de papel en la que Ben Harris, de la Universidad de Cambridge Servicios de Información, propuso en julio de 2015 en nombre del equipo de YAML los medios tipo: text/vnd.yaml con alias obsoletos (sugerido): text/yaml text/x-yaml application/x-yaml que todavía se propuso/en espera (el hilo no indica el estado de la propuesta) por lo que esta respuesta no es más definitivo que los demás :-)

+2

Parece que la propuesta no ha ido a ninguna parte a partir de enero de 2018, y mis intentos de contactar al autor han quedado sin respuesta – djb