YAML ประเภทใบ้?


113

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

คำตอบ:


65

Ruby on Rails ใช้application/x-yamlกับทางเลือกอื่นของtext/yaml( source )

ฉันคิดว่ามันเป็นเรื่องของการประชุมไม่มีเหตุผลทางเทคนิคเท่าที่ฉันสามารถบอกได้


80
นี่ไม่เป็นความจริงเลย ประเภทtext/ละครใบ้ที่ขึ้นต้นด้วยจะถูกประมวลผลเป็น ISO-8859-1 เว้นแต่จะมีการประกาศประเภทละครใบ้อื่นอย่างชัดเจน (เช่นtext/html; charset=utf-8) ประเภท Mime ที่ขึ้นต้นด้วยapplication/จะถูกประมวลผลเป็น UTF-8 เว้นแต่จะมีการประกาศประเภท Mime อื่นอย่างชัดเจน ยกตัวอย่างเช่นtext/x-yamlไม่สามารถใช้อักขระ UTF-8 ในขณะที่text/x-yaml; charset=utf-8และapplication/x-yamlสามารถ IIRC กำหนดไว้ใน RFC 3023
Ryan Parman

2
@RyanParman คุณตั้งค่าตัวอักษรที่สับสนและพิมพ์ MIME เล็กน้อย คุณคิดถูกที่text/*ไม่มีcharset=พารามิเตอร์ที่ชัดเจนสันนิษฐานว่าเป็น ISO-8859-1 แต่สิ่งที่อยู่ในapplication/*นั้นไม่จำเป็นต้องเป็นข้อความ (RFC ที่คุณเชื่อมโยงเป็นเรื่องเกี่ยวกับ XML ไม่แน่ใจว่าเกี่ยวข้องอย่างไร)
Thanatos

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/yamlหรือtext/x-yamlดังนั้นค่าเริ่มต้นคือ UTF-8
aef

7
RFC 3023, รวมทั้งการจัดการการเข้ารหัสที่ได้รับการจำหน่ายแล้วในปี 2014 โดยtools.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 เพื่อตรวจสอบประเภทสื่อที่ Ben Harris จาก University of Cambridge Information Services เสนอในเดือนกรกฎาคม 2015 ในนามของทีม YAML ประเภทสื่อ :

text/vnd.yaml

ด้วย (แนะนำ) นามแฝงที่เลิกใช้:

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

ที่ยังคงเสนอ / รอดำเนินการ (เธรดไม่ได้ระบุสถานะของข้อเสนอ) ดังนั้นคำตอบนี้จึงไม่ชัดเจนไปกว่าข้ออื่น ๆ :-)


11
ดูเหมือนว่าข้อเสนอดังกล่าวจะหายไปตั้งแต่เดือนมกราคม 2018 และความพยายามของฉันในการติดต่อผู้เขียนก็ไม่ได้รับคำตอบ
djb

15

ฉันจะพูดว่า text / x-yaml:

ข้อความผ่านแอปพลิเคชันเนื่องจากเป็นสิ่งที่มนุษย์อ่านได้

x-yaml มากกว่า yaml เนื่องจากไม่ได้รับการยอมรับในรายการประเภท mime ที่ลงทะเบียน

แก้ไข: จาก RFC 3023 (ประเภทสื่อ XML):

ประเภทสื่อระดับบนสุด "text" มีข้อ จำกัด บางประการเกี่ยวกับเอนทิตี MIME และมีอธิบายไว้ใน [RFC2045] และ [RFC2046] โดยเฉพาะอย่างยิ่งไม่อนุญาตให้ใช้ตระกูล UTF-16, UCS-4 และ UTF-32 (ยกเว้นผ่าน HTTP [RFC2616] ซึ่งใช้กลไกคล้าย MIME)

น่าสนใจ ... ไม่แน่ใจว่าหมายถึงอะไร แต่เป็นอาหารสำหรับความคิด


1
มนุษย์สามารถอ่านได้ แต่มีจุดประสงค์เพื่อสื่อสารแอปพลิเคชัน ... XML อยู่ระหว่างการใช้งาน
Vinko Vrsalovic

และยังอยู่ใต้ข้อความ ดูเหมือนว่าคุณจะต้องมีทั้ง text / x-yaml และ application / x-yaml ... rfc-editor.org/rfc/rfc3023.txt
Vinko Vrsalovic

สิ่งที่คุ้มค่านี่คือสิ่งที่การใช้งาน TastyPie REST ของ Django เข้าใจ
Michael Scheper

1
... แต่มนุษย์ JSON ไม่สามารถอ่านได้เช่นกัน? ฉันคิดว่ามันจะสอดคล้องกันมากขึ้นที่จะพูดapplication/yamlเหมือนกับที่เราอาจจะพูดและapplication/json applicaiton/xml
Anthony Rutledge

7

"เอกซ์" สื่อประเภทเป็นกำลังใจให้ดูRFC 4288 มาตรา 3.4 สิ่งที่ควรทำคือการใช้โครงสร้างส่วนบุคคลต้นไม้ผู้ขายหรือพยายามลงทะเบียนประเภทสื่อที่เหมาะสม


นั่นจะเป็นเช่นนั้นapplication/vnd.yamlหรือtext/vnd.yaml(ข้อความดูเหมือนดีกว่า)
สาย

1
ไม่เป็นความจริงทั้งหมดเช่นกัน เพียงต้นไม้ชนิดย่อยซึ่งมีวัตถุประสงค์สำหรับการใช้งานโดยไม่ต้องลงทะเบียนกับ IANA x.คือ vnd.และprs.ต้องลงทะเบียน ดูtools.ietf.org/html/rfc6838#section-3.2และtools.ietf.org/html/rfc6838#section-3.3
aef

4

บน Chrome application/yamlจะดาวน์โหลดในขณะที่text/yamlจะแสดง


สิ่งนี้ไม่ได้ให้คำตอบสำหรับคำถาม เมื่อคุณมีเพียงพอชื่อเสียงคุณจะสามารถที่จะแสดงความคิดเห็นในโพสต์ใด ๆ ; แทนที่จะให้คำตอบที่ไม่จำเป็นต้องชี้แจงจากผู้ถาม - จากรีวิว
ysf

3
@ysf ความคิดเห็นของคุณอวดดีมากเกินไป IMO โพสต์นั้นสั้น แต่น่าสะสมตอบคำถามของ OP อธิบาย "ทำไม" ของแต่ละตัวเลือกและพยายามระบุข้อ จำกัด ("... อย่างน้อยก็ใน Chrome นี่เป็นเรื่องจริง") ไม่ต้องพูดถึง: ไม่มีใครให้ ข้อมูลเหล่านี้. OP อาจไม่ได้พิจารณาด้วยซ้ำว่าประเภทเนื้อหาที่แตกต่างกันอาจส่งผลให้เกิดพฤติกรรมที่แตกต่างกันซึ่งอาจเป็นประโยชน์กับเขาหรือเธอ
Dan H

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.