Jenis pantomim YAML?


112

Jenis MIME apa yang paling tepat untuk digunakan saat mengirim data terstruktur dengan YAML melalui HTTP?

Penjelasan tentang mengapa pilihan yang diberikan paling tepat akan sangat dihargai.

Tidak ada tipe aplikasi atau teks terdaftar yang dapat saya lihat.

Contoh:

> GET /example.yaml

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

Opsi yang memungkinkan:

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

Jawaban:


64

Ruby on Rails digunakan application/x-yamldengan alternatif text/yaml( sumber ).

Saya pikir ini hanya masalah kesepakatan, tidak ada alasan teknis , sejauh yang saya tahu.


79
Ini tidak sepenuhnya benar. text/Jenis pantomim yang dimulai dengan akan diproses sebagai ISO-8859-1 kecuali jenis pantomim lain dideklarasikan secara eksplisit (misalnya text/html; charset=utf-8). application/Jenis pantomim yang dimulai dengan diproses sebagai UTF-8 kecuali jenis pantomim lain dideklarasikan secara eksplisit. Misalnya, text/x-yamltidak dapat menggunakan karakter UTF-8 while text/x-yaml; charset=utf-8dan application/x-yamlcan. IIRC, ini didefinisikan dalam RFC 3023.
Ryan Parman

2
@RyanParman Anda membingungkan kumpulan karakter dan tipe MIME sedikit. Anda benar text/*, tanpa charset=parameter eksplisit yang dianggap ISO-8859-1, tetapi hal-hal di application/*dalamnya belum tentu teks. (RFC yang Anda tautkan adalah tentang XML, tidak yakin bagaimana itu relevan.)
Thanatos

3
@RyanTidak benar. tools.ietf.org/html/rfc6838#section-4.2.1 mengatakan: 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.. Tidak ada definisi formal untuk text/yamlnor text/x-yaml, jadi defaultnya adalah UTF-8.
aef

7
RFC 3023, termasuk penanganan encoding telah ditinggalkan pada tahun 2014 oleh tools.ietf.org/html/rfc7303#section-3 . Aturan default ke US-ASCII(catatan: tidak ISO-8859-1) untuk text/*jenis media di RFC 2046 telah usang oleh 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 pada Januari 2013. Baik RFC 3023 maupun RFC 7303 tidak mengatakan sesuatu yang umum tentang text/*AFAIK.
aef

6
@RyanParman Jadi kesimpulan Anda mungkin benar saat itu tetapi Anda salah mereferensikan RFC 3023, sedangkan aturannya berasal dari RFC 2046. Namun hari ini, UTF-8adalah default untuk setiap text/*jenis media yang tidak menyatakan sesuatu yang berbeda dalam pendaftaran IANA-nya.
aef

22

Meskipun jawaban lain diterima, silakan lihat Pendaftaran jenis media yang diusulkan ini untuk utas YAML di milis IANA untuk meninjau Jenis Media di mana Ben Harris, Layanan Informasi Universitas Cambridge, mengusulkan pada Juli 2015 atas nama tim YAML jenis media :

text/vnd.yaml

dengan alias yang tidak digunakan lagi (disarankan):

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

Itu masih diusulkan / tertunda (utas tidak menunjukkan status proposal) jadi jawaban ini tidak lebih pasti dari yang lain :-)


11
Tampaknya proposal itu tidak berhasil sampai Jan 2018, dan upaya saya untuk menghubungi penulis tidak terjawab
djb

15

Saya akan mengatakan teks / x-yaml:

teks di atas aplikasi karena itu dapat dibaca manusia

x-yaml melalui yaml karena belum diterima ke dalam daftar terdaftar tipe mime.

Edit: dari RFC 3023 (Jenis Media XML):

Jenis media tingkat atas "teks" memiliki beberapa batasan pada entitas MIME dan dijelaskan di [RFC2045] dan [RFC2046]. Secara khusus, keluarga UTF-16, UCS-4, dan UTF-32 tidak diizinkan (kecuali melalui HTTP [RFC2616], yang menggunakan mekanisme mirip MIME).

Menarik ... Tidak begitu yakin apa artinya, tapi makanan untuk dipikirkan.


1
Ini dapat dibaca manusia tetapi tujuannya adalah untuk mengkomunikasikan aplikasi ... XML sedang diterapkan
Vinko Vrsalovic

Dan juga di bawah teks. Sepertinya Anda harus memiliki teks / x-yaml dan application / x-yaml ... rfc-editor.org/rfc/rfc3023.txt
Vinko Vrsalovic

Untuk apa nilainya, inilah yang dipahami oleh implementasi TastyPie REST Django.
Michael Scheper

1
... tapi bukankah JSON juga bisa dibaca manusia? Saya pikir itu akan lebih konsisten untuk dikatakan application/yaml, seperti yang mungkin kita katakan application/jsondan applicaiton/xml.
Anthony Rutledge

7

Jenis media "x-" tidak disarankan, lihat RFC 4288, Bagian 3.4 . Hal yang benar untuk dilakukan adalah menggunakan pohon pribadi, pohon vendor, atau mencoba pendaftaran jenis media yang tepat.


Jadi itu akan application/vnd.yamlatau text/vnd.yaml(teks tampaknya lebih baik)
kabel

Tidak sepenuhnya benar juga. Satu-satunya pohon subtipe yang dimaksudkan untuk digunakan tanpa registrasi dengan IANA adalah x.. vnd.dan prs.membutuhkan registrasi. Lihat tools.ietf.org/html/rfc6838#section-3.2 dan tools.ietf.org/html/rfc6838#section-3.3 .
aef

3

Di Chrome application/yamlakan mengunduh, sementara text/yamlakan ditampilkan.


Ini tidak memberikan jawaban atas pertanyaan tersebut. Setelah memiliki reputasi yang memadai, Anda dapat mengomentari kiriman apa pun ; sebagai gantinya, berikan jawaban yang tidak memerlukan klarifikasi dari penanya . - Dari Ulasan
ysf

2
@ysf Komentar Anda terlalu berlebihan, IMO. Pos ini singkat tapi akurat, menjawab pertanyaan OP, menjelaskan "mengapa" dari setiap opsi, DAN berusaha untuk menyatakan batasannya ("... setidaknya di Chrome ini benar".) Belum lagi: tidak ada orang lain yang memberikan informasi ini. OP mungkin tidak menganggap bahwa Jenis Konten yang berbeda dapat menghasilkan perilaku yang berbeda, yang sebenarnya mungkin berguna baginya.
Dan H

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.