2008-12-01 11 views
74

Welcher MIME-Typ ist am besten geeignet, wenn Daten gesendet werden, die mit YAML über HTTP strukturiert sind?YAML Mimetyp?

Eine Erklärung der warum eine gegebene Wahl ist am besten geeignet wäre sehr geschätzt.

Es gibt keine registrierten application type oder , die ich sehen kann.

Beispiel:

> GET /example.yaml 

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

Mögliche Optionen:

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

Antwort

42

Ruby on Rails verwendet application/x-yaml mit einem alternativen Text/yaml (source).

Ich denke, es ist nur eine Frage der Konvention, gibt es keine technische warum, afaict.

+0

Seltsam, google for "yaml mime" gibt einen Ruby Link als ersten Treffer, mit text/x-yaml und no men Anwendung/x-yaml – Greg

+51

Dies ist nicht _quite_ wahr.Mime-Typen, die mit 'text /' beginnen, müssen als ISO-8859-1 verarbeitet werden, es sei denn, ein anderer Mime-Typ wird explizit deklariert (z. B. 'text/html; charset = utf-8'). Mime-Typen, die mit 'application /' beginnen, werden als UTF-8 verarbeitet, es sei denn, ein anderer Mime-Typ wird explizit deklariert. Zum Beispiel kann 'text/x-yaml' keine UTF-8-Zeichen verwenden, während' text/x-yaml; charset = utf-8' und 'application/x-yaml' können. IIRC, das ist in RFC 3023 definiert. –

+0

@Ryan: Danke, tolle Infos. Gilt es für YAML? Es ist nicht XML ... –

14

würde ich text/x-yaml sagen:

Text über Anwendung, da es sich um eine menschenlesbare

x-yaml über yaml ist, weil es nicht in die registrierte Liste der MIME-Typen akzeptiert wurde .

Edit: von RFC 3023 (XML Medien-Typ):

Der Top-Level-Medientyp "Text" hat einige Einschränkungen auf MIME-Einheiten und sie sind in [RFC2045] beschrieben und [RFC2046 ]. Insbesondere sind die UTF-16-Familie, UCS-4 und UTF-32 nicht erlaubt (außer über HTTP [RFC2616], die eine MIME-ähnliche Mechanismus verwendet).

Interessant ... Nicht genau, was es bedeutet, aber Denkanstoß.

+1

Es ist lesbar, aber seine Absicht ist, Anwendungen zu kommunizieren ... XML ist unter Anwendung –

+0

Und auch unter Text. Es scheint, dass Sie sowohl text/x-yaml als auch application/x-yaml haben müssten ... http://www.rfc-editor.org/rfc/rfc3023.txt –

+0

Für was es wert ist, das ist was Django's TastyPie REST-Implementierung versteht. –

-10

Ich weiß, das ist hässlich, aber verwenden Sie text/plain, wenn Sie es in einem Browser anzeigen möchten und es richtig formatiert haben - alle oben genannten werden standardmäßig zu einem Download in IE oder Firefox.

5

Von "x-" Medientypen wird abgeraten, siehe RFC 4288, Section 3.4. Es ist richtig, den persönlichen Baum oder den Lieferantenbaum zu verwenden oder tatsächlich eine ordnungsgemäße Medienregistrierung zu versuchen.

+0

Das wäre also "application/vnd.yaml" oder "text/vnd.yaml" (Text scheint besser) – wires

+0

Nicht ganz richtig. Der einzige Subtypbaum, der ohne Registrierung bei IANA verwendet werden soll, ist 'x'. 'vnd.' und' prs.' erfordern eine Registrierung. Siehe https://tools.ietf.org/html/rfc6838#section-3.2 und https://tools.ietf.org/html/rfc6838#section-3.3. – aef

11

Obwohl eine andere Antwort akzeptiert wurde, finden Sie in diesen Proposed media type registration for YAML Thread auf der Mailingliste der IANA für die Überprüfung des Medientypen, in dem Ben Harris, University of Cambridge Information Services, im Juli 2015 im Auftrag des YAML-Teams vorgeschlagen die Medien Typ: text/vnd.yaml mit (vorgeschlagen) ist veraltet und Aliase: text/yaml text/x-yaml application/x-yaml das noch vorgeschlagen/anhängig ist (der Thread Status des Vorschlags nicht angeben), so diese Antwort ist nicht mehr endgültig als die anderen :-)

+2

Es scheint, dass der Vorschlag als nichts von Januar 2018 gegangen ist, und meine Versuche, den Autor zu kontaktieren, sind unbeantwortet geblieben – djb