Мім типу YAML?


112

Який тип MIME є найбільш відповідним для використання при передачі даних, структурованих за допомогою YAML через HTTP?

Пояснення, чому даний вибір є найбільш відповідним, було б вдячним.

Немає зареєстрованого типу програми чи типу тексту, який я бачу.

Приклад:

> GET /example.yaml

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

Можливі варіанти:

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

Відповіді:


64

Ruby on Rails використовує application/x-yamlальтернативу text/yaml( джерело ).

Я думаю, що це лише питання конвенції, немає технічних причин, наскільки я можу сказати.


79
Це не зовсім так. Типи мім, які починаються з text/, підлягають обробці як ISO-8859-1, якщо інший тип mime не буде явно оголошено (наприклад, text/html; charset=utf-8). Типи мім, які починаються з application/, обробляються як UTF-8, якщо інший тип мім явно не оголошено. Наприклад, text/x-yamlне можна використовувати символи UTF-8, поки text/x-yaml; charset=utf-8і application/x-yamlможе. IIRC, це визначено у RFC 3023.
Райан Парман

2
@RyanParman Ви плутаєте набір символів і MIME набираєте трохи. Ви маєте рацію, що text/*без явного charset=параметра вважається ISO-8859-1, але речі в application/*тексті не обов'язково є текстовими. (RFC, з яким ви пов’язані, стосується XML, не впевнений, наскільки це актуально.)
Танатос,

3
@RyanParman Неправда. tools.ietf.org/html/rfc6838#section-4.2.1 каже: 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.. Офіційного визначення text/yamlnі немає text/x-yaml, тому типовим є UTF-8.
aef

7
RFC 3023, включаючи обробку кодування, була застаріла в 2014 році інструментами.ietf.org/ html/rfc7303#section-3 . Правило за замовчуванням US-ASCII(зауважте: ні ISO-8859-1) для text/*типів медіа в RFC 2046 застаріло 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.в tools.ietf.org/html/rfc6838#section-4.2.1 у січні 2013 року. Ні RFC 3023, ні RFC 7303 не говорять нічого загального про text/*AFAIK.
aef

6
@RyanParman Тож ваш висновок, ймовірно, був правильним ще тоді, але ви помилково посилалися на RFC 3023, тоді як правило прийшло від RFC 2046. Однак сьогодні UTF-8це стандартне значення для кожного text/*типу медіа, який не реєструє щось інше в своїй реєстрації IANA.
aef

22

Хоча було прийнято ще одну відповідь, будь ласка, зверніться до цієї пропонованої реєстрації носіїв для потоку YAML у списку розсилки IANA, щоб переглянути тип медіа, в якому Бен Харріс, Університет Кембриджської служби інформації, запропонував у липні 2015 року від імені команди YAML тип ЗМІ :

text/vnd.yaml

із (запропонованим) застарілим псевдонімом:

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

Це все ще пропонується / очікує на розгляд (нитка не вказує статусу пропозиції), тому ця відповідь є не остаточнішою, ніж інші :-)


11
Здається, що пропозиція нікуди не пішла станом на січень 2018 року, і мої спроби зв’язатися з автором залишилися без відповіді
djb

15

Я б сказав текст / x-yaml:

текст над програмою, оскільки це читається людиною

x-yaml над yaml, оскільки він не був внесений до зареєстрованого списку типів mime.

Редагувати: від RFC 3023 (типи носіїв XML):

"Текст" медіа верхнього рівня має деякі обмеження для об'єктів MIME, і вони описані в [RFC2045] та [RFC2046]. Зокрема, сімейства UTF-16, UCS-4 та UTF-32 заборонені (за винятком HTTP [RFC2616], який використовує MIME-подібний механізм).

Цікаво ... Не зовсім впевнений, що це означає, але їжа для роздумів.


1
Це читається для людей, але його намір полягає в спілкуванні програм ... XML знаходиться в застосуванні
Vinko Vrsalovic

А також під текстом. Здається, вам доведеться мати як текст / x-yaml, так і додаток / x-yaml ... rfc-editor.org/rfc/rfc3023.txt
Vinko Vrsalovic

Оскільки це варте, це те, що розуміє реалізація Django TastyPie REST.
Майкл Шепер

1
... але чи не читається також JSON по-людськи? Я думаю, було б більш послідовно сказати application/yaml, як ми можемо сказати application/jsonі applicaiton/xml.
Ентоні

7

Типи носіїв "x-" не перешкоджають, див. RFC 4288, Розділ 3.4 . Правильно зробити, це використовувати особисте дерево, дерево постачальника або фактично спробувати належну реєстрацію типу медіа.


Так що буде application/vnd.yamlабо text/vnd.yaml(текст , здається , краще)
дроти

Не зовсім правда також. Єдине дерево підтипу, яке призначене для використання без реєстрації в IANA, - це x.. vnd.і prs.вимагають реєстрації. Див. Tools.ietf.org/html/rfc6838#section-3.2 та tools.ietf.org/html/rfc6838#section-3.3 .
афе

3

На Chrome application/yamlзавантажуватимуть, а text/yamlвідображатимуть.


Це не дає відповіді на запитання. Коли у вас буде достатня репутація, ви зможете коментувати будь-яку публікацію ; натомість надайте відповіді, які не потребують уточнення від запитувача . - З огляду
ysf

2
@ysf Ваш коментар надмірно педантичний, ІМО. Повідомлення є коротким, але накопиченим, відповідає на питання ОП, пояснює "чому" кожного варіанту, І намагається вказати свої обмеження ("... принаймні, на Chrome це правда".) Не кажучи вже про: ніхто інший не надав ця інформація. ОП може навіть не вважати, що різні типи вмісту можуть спричинити різну поведінку, що може бути корисним йому або їй.
Dan H

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.