Tipo mimo YAML?


112

Qual è il tipo MIME più appropriato da utilizzare quando si inviano dati strutturati con YAML su HTTP?

Una spiegazione del perché una determinata scelta è più appropriata sarebbe molto apprezzata.

Non esiste un tipo di applicazione registrato o un tipo di testo che posso vedere.

Esempio:

> GET /example.yaml

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

Possibili opzioni:

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

Risposte:


64

Ruby on Rails usa application/x-yamlcon un'alternativa a text/yaml( source ).

Penso che sia solo una questione di convenzione, non ci sono ragioni tecniche , per quanto ne so.


79
Questo non è del tutto vero. I tipi text/MIME che iniziano con devono essere elaborati come ISO-8859-1 a meno che non sia esplicitamente dichiarato un altro tipo MIME (es text/html; charset=utf-8.). I tipi application/MIME che iniziano con vengono elaborati come UTF-8 a meno che non venga esplicitamente dichiarato un altro tipo MIME. Ad esempio, text/x-yamlnon è possibile utilizzare caratteri UTF-8 mentre text/x-yaml; charset=utf-8e application/x-yamlcan. IIRC, questo è definito nella RFC 3023.
Ryan Parman

2
@ RyanParman Stai confondendo un po 'il set di caratteri e il tipo MIME. Hai ragione sul fatto che text/*, senza un charset=parametro esplicito , si presume che sia ISO-8859-1, ma le cose in application/*non sono necessariamente testo. (L'RFC che hai collegato riguarda XML, non sono sicuro di quanto sia rilevante.)
Thanatos,

3
@ RyanParman Non è vero. tools.ietf.org/html/rfc6838#section-4.2.1 dice: If a "charset" parameter is specified, it SHOULD be a required parameter, eliminating the options of specifying a default value. If there is a strong reason for the parameter to be optional despite this advice, each subtype MAY specify its own default value, or alternatively, it MAY specify that there is no default value. Finally, the "UTF-8" charset [RFC3629] SHOULD be selected as the default.. Non esiste una definizione formale di text/yamlnor text/x-yaml, quindi il valore predefinito è UTF-8.
aef

7
RFC 3023, inclusa la gestione della codifica, è stata resa obsoleta nel 2014 da tools.ietf.org/html/rfc7303#section-3 . La regola per l'impostazione predefinita US-ASCII(nota: non ISO-8859-1) per text/*i tipi di media in RFC 2046 è stata resa obsoleta da Regardless of what approach is chosen, all new text/* registrations MUST clearly specify how the charset is determined; relying on the US-ASCII default defined in Section 4.1.2 of [RFC2046] is no longer permitted.in tools.ietf.org/html/rfc6838#section-4.2.1 nel gennaio 2013. Né RFC 3023 né RFC 7303 dicono qualcosa di generico su text/*PER QUANTO NE SO.
aef

6
@RyanParman Quindi la tua conclusione era probabilmente corretta allora, ma hai erroneamente citato RFC 3023, mentre la regola proveniva da RFC 2046. Oggi, tuttavia, UTF-8è l'impostazione predefinita per ogni text/*tipo di supporto che non indica qualcosa di diverso nella sua registrazione IANA.
aef

22

Sebbene un'altra risposta sia stata accettata, fare riferimento a questo tipo di supporto proposto per la registrazione del thread YAML sulla mailing list IANA per la revisione del tipo di supporto in cui Ben Harris, University of Cambridge Information Services, ha proposto nel luglio 2015 per conto del team YAML il tipo di media :

text/vnd.yaml

con alias deprecati (suggeriti):

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

Che è ancora proposta / in sospeso (il thread non indica lo stato della proposta) quindi questa risposta non è più definitiva delle altre :-)


11
Sembra che la proposta non sia andata da nessuna parte a partire da gennaio 2018, ei miei tentativi di contattare l'autore sono rimasti senza risposta
djb

15

Direi text / x-yaml:

testo sull'applicazione perché è leggibile dall'uomo

x-yaml su yaml perché non è stato accettato nell'elenco registrato dei tipi MIME.

Modifica: da RFC 3023 (XML Media Types):

Il tipo di supporto di primo livello "testo" ha alcune restrizioni sulle entità MIME e sono descritte in [RFC2045] e [RFC2046]. In particolare, la famiglia UTF-16, UCS-4 e UTF-32 non sono consentite (eccetto su HTTP [RFC2616], che utilizza un meccanismo simile a MIME).

Interessante ... Non sono esattamente sicuro di cosa significhi, ma spunti di riflessione.


1
È leggibile dall'uomo ma il suo intento è comunicare le applicazioni ... XML è in fase di applicazione
Vinko Vrsalovic

E anche sotto testo. Sembra che dovresti avere sia text / x-yaml che application / x-yaml ... rfc-editor.org/rfc/rfc3023.txt
Vinko Vrsalovic

Per quello che vale, questo è ciò che l'implementazione REST di TastyPie di Django comprende.
Michael Scheper

1
... ma JSON non è leggibile anche dagli umani? Penso che sarebbe più coerente da dire application/yaml, proprio come potremmo dire application/jsone applicaiton/xml.
Anthony Rutledge

7

I tipi di media "x-" sono sconsigliati, vedere RFC 4288, sezione 3.4 . La cosa giusta da fare è utilizzare l'albero personale, l'albero del fornitore o tentare effettivamente una corretta registrazione del tipo di supporto.


Quindi sarebbe application/vnd.yamlo text/vnd.yaml(il testo sembra migliore)
fili

Non del tutto vero. L'unico sottotipo di albero che è inteso per l'uso senza registrazione con IANA è x.. vnd.e prs.richiedono la registrazione. Vedi tools.ietf.org/html/rfc6838#section-3.2 e tools.ietf.org/html/rfc6838#section-3.3 .
aef

3

Su Chrome application/yamlverrà scaricato, mentre text/yamlverrà visualizzato.


Questo non fornisce una risposta alla domanda. Una volta che avrai una reputazione sufficiente, potrai commentare qualsiasi post ; fornire invece risposte che non richiedono chiarimenti da parte del richiedente . - Dalla recensione
ysf

2
@ysf Il tuo commento è eccessivamente pedante, IMO. Il post è breve ma graduale, risponde alla domanda dell'OP, spiega il "perché" di ciascuna opzione E si sforza di dichiararne i limiti ("... almeno su Chrome questo è vero".) Per non parlare: nessun altro ha fornito questa informazione. L'OP potrebbe non aver nemmeno considerato che diversi tipi di contenuto potrebbero portare a comportamenti diversi, che potrebbero essere effettivamente utili per lui o lei.
Dan H

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.