2008-12-01 14 views
74

Jaki jest najbardziej odpowiedni typ MIME do użycia podczas wysyłania danych zorganizowanych za pomocą YAML przez HTTP?Typ mime YAML?

Wyjaśnienie , dlaczego dany wybór jest najbardziej odpowiedni, byłoby bardzo docenione.

Nie ma zarejestrowanego użytkownika application type lub text type, którego mogę zobaczyć.

przykład:

> GET /example.yaml 

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

opcji:

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

Odpowiedz

42

Ruby szynach wykorzystuje aplikacji/X YAML alternatywę text/YAML (source).

Myślę, że to tylko kwestia konwencji, nie ma żadnego powodu, dla czego, afaict.

+0

Weird, google dla "yaml mime" daje link ruby ​​jako pierwsze trafienie, z tekstem/x-yaml i bez mężczyzn aplikacji/x-yaml – Greg

+51

To nie jest _quite_ prawda.Typy Mime zaczynające się od 'text /' mają być przetwarzane jako ISO-8859-1, chyba że wyraźnie deklarowany jest inny typ MIME (np. 'Text/html; charset = utf-8'). Typy Mime, które zaczynają się od 'application /' są przetwarzane jako UTF-8, chyba że inny rodzaj MIME jest jawnie zadeklarowany. Na przykład 'text/x-yaml' nie może używać znaków UTF-8, podczas gdy' text/x-yaml; charset = utf-8' i 'application/x-yaml' mogą. IIRC, jest to zdefiniowane w RFC 3023. –

+0

@Ryan: Dzięki, świetne informacje. Czy dotyczy to YAML? To nie jest XML ... –

14

Powiedziałbym text/x-yaml:

tekst na aplikacji, ponieważ jest to czytelny dla człowieka

x-yaml nad YAML ponieważ nie został przyjęty do zarejestrowanej listy typów MIME .

Edit: z RFC 3023 (typy XML multimedialny):

typ nośnika najwyższego poziomu "text" zawiera pewne ograniczenia dotyczące podmiotów MIME i są one opisane w [RFC2045] i [RFC2046 ]. W szczególności, rodzina UTF-16 , UCS-4 i UTF-32 jest niedozwolona (z wyjątkiem ponad HTTP [RFC2616], która wykorzystuje mechanizm podobny do MIME ).

Interesujące ... Nie jestem do końca pewien, co to znaczy, ale jedzenie do myślenia.

+1

Jest czytelny dla człowieka, ale jego celem jest przekazywanie aplikacji ... XML jest pod aplikacją –

+0

A także pod tekstem. Wygląda na to, że musiałbyś mieć zarówno text/x-yaml, jak i application/x-yaml ... http://www.rfc-editor.org/rfc/rfc3023.txt. –

+0

. Dla tego, co jest warte, to właśnie to Django Rozumie implementację REST TastyPie. –

-10

Wiem, że to brzydkie, ale użyj text/plain, jeśli chcesz wyświetlić go w przeglądarce i poprawnie sformatować - wszystkie powyższe ustawienia będą domyślnie pobierane w IE lub Firefox.

5

"Odradzane są typy" x- ", patrz RFC 4288, Section 3.4. Właściwą rzeczą jest użycie drzewa osobistego, drzewa dostawców lub podjęcie właściwej próby rejestracji nośnika.

+0

Tak więc byłoby to "application/vnd.yaml" lub "text/vnd.yaml" (tekst wydaje się lepszy). – wires

+0

Nie do końca również. Jedynym drzewem podtypów, które jest przeznaczone do użytku bez rejestracji w IANA, jest 'x'. 'vnd' i' prs.' wymagają rejestracji. Zobacz https://tools.ietf.org/html/rfc6838#section-3.2 i https://tools.ietf.org/html/rfc6838#section-3.3. – aef

11

Chociaż inna odpowiedź została przyjęta, należy odnieść się do tej Proposed media type registration for YAML wątku na liście dyskusyjnej IANA do przeglądania typu nośnika, w którym Ben Harris, University of Cambridge Information Services, proponowaną w lipcu 2015 roku w imieniu zespołu YAML media Typ: text/vnd.yaml z (sugerowana) nieaktualnych aliasów: text/yaml text/x-yaml application/x-yaml to wciąż proponowany/toku (nitka nie wskazuje status wniosku), więc ta odpowiedź nie jest bardziej ostateczne niż inni :-)

+2

Wygląda na to, że wniosek nigdzie nie nadeszła od stycznia 2018 r., A moje próby skontaktowania się z autorem pozostały bez odpowiedzi – djb