2008-12-01 18 views
74

Loại MIME thích hợp nhất để sử dụng khi gửi dữ liệu có cấu trúc với YAML qua HTTP là gì?YAML mime type?

Giải thích về lý do tại sao một lựa chọn nhất định phù hợp nhất sẽ được đánh giá cao.

Không có đăng ký application type hoặc text type mà tôi có thể xem.

Ví dụ:

> GET /example.yaml 

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

có thể lựa chọn:

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

Trả lời

42

Ruby on Rails sử dụng application/x-yaml với một sự thay thế của văn bản/yaml (source).

Tôi nghĩ rằng đó chỉ là vấn đề về quy ước, không có kỹ thuật lý do, từ xa.

+0

Weird, google cho "yaml mime" cung cấp liên kết ruby ​​là lần truy cập đầu tiên, với văn bản/x-yaml và không có người đàn ông tion của ứng dụng/x-yaml – Greg

+51

Đây không phải là _quite_ true.Các loại MIME bắt đầu bằng 'text /' sẽ được xử lý dưới dạng ISO-8859-1 trừ khi loại mime khác được khai báo rõ ràng (ví dụ: 'text/html; charset = utf-8'). Các kiểu MIME bắt đầu bằng 'application /' được xử lý như là UTF-8 trừ khi một loại mime khác được khai báo một cách rõ ràng. Ví dụ, 'text/x-yaml' không thể sử dụng các ký tự UTF-8 trong khi' text/x-yaml; charset = utf-8' và 'application/x-yaml' có thể. IIRC, điều này được định nghĩa trong RFC 3023. –

+0

@Ryan: Cảm ơn, thông tin tuyệt vời. Nó có áp dụng cho YAML không? Nó không phải là XML ... –

14

Tôi muốn nói text/x-yaml:

văn bản qua ứng dụng vì nó là một

x-yaml con người có thể đọc được trên yaml bởi vì nó đã không được chấp nhận vào danh sách đăng ký của loại kịch câm .

Chỉnh sửa: từ RFC 3023 (loại XML Media):

Đỉnh cấp loại phương tiện truyền thông "văn bản" có một số hạn chế đối với các đơn vị MIME và họ được mô tả trong [RFC2045] và [RFC2046 ]. Cụ thể, các họ UTF-16, UCS-4 và UTF-32 là không được phép (ngoại trừ trên HTTP [RFC2616], sử dụng cơ chế giống MIME).

Thú vị ... Không chắc chắn ý nghĩa của nó, nhưng thực phẩm cho tư tưởng.

+1

Đó là con người có thể đọc được nhưng mục đích của nó là để giao tiếp các ứng dụng ... XML đang được áp dụng –

+0

Và cũng theo văn bản. Có vẻ như bạn phải có cả văn bản/x-yaml và ứng dụng/x-yaml ... http://www.rfc-editor.org/rfc/rfc3023.txt –

+0

Đối với những gì nó có giá trị, đây là những gì Django của TastyPie REST thực hiện hiểu. –

-10

Tôi biết điều này rất xấu, nhưng sử dụng văn bản/đồng bằng nếu bạn muốn hiển thị nó trong trình duyệt và định dạng nó đúng cách - tất cả các điều trên sẽ mặc định tải xuống trong IE hoặc Firefox.

5

loại phương tiện "x" không được khuyến khích, xem RFC 4288, Section 3.4. Điều đúng đắn cần làm là sử dụng cây cá nhân, cây nhà cung cấp hoặc thực sự cố gắng đăng ký loại phương tiện thích hợp.

+0

Vì vậy, đó sẽ là 'application/vnd.yaml' hoặc' text/vnd.yaml' (văn bản có vẻ tốt hơn) – wires

+0

Không hoàn toàn đúng là tốt. Cây con kiểu con duy nhất được sử dụng mà không cần đăng ký với IANA là 'x.'. 'vnd.' và' prs.' yêu cầu đăng ký. Xem https://tools.ietf.org/html/rfc6838#section-3.2 và https://tools.ietf.org/html/rfc6838#section-3.3. – aef

11

Mặc dù câu trả lời khác đã được chấp nhận, vui lòng tham khảo Proposed media type registration for YAML chủ đề này trên mailing list IANA cho rà soát Media Type trong đó Ben Harris, Đại học Cambridge Information Services, đề xuất trong tháng 7 năm 2015 thay mặt cho đội YAML giới truyền thông loại: text/vnd.yaml với bí danh bị phản đối (gợi ý): text/yaml text/x-yaml application/x-yaml Đó là vẫn đề xuất/cấp phát (thread không chỉ ra tình trạng của đề xuất) để câu trả lời này là không dứt khoát hơn những người khác :-)

+2

Dường như đề xuất đó đã biến mất vào thời điểm tháng 1 năm 2018 và nỗ lực của tôi liên hệ với tác giả đã không được trả lời – djb