YAML MIME 유형?


112

HTTP를 통해 YAML로 구조화 된 데이터를 보낼 때 가장 적합한 MIME 유형은 무엇입니까?

주어진 선택이 가장 적절한 지에 대한 설명을 많이 주시면 감사하겠습니다.

내가 볼 수있는 등록 된 애플리케이션 유형 또는 텍스트 유형 이 없습니다 .

예:

> 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는 ( source ) application/x-yaml의 대안과 함께 사용합니다 .text/yaml

나는 그것이 단지 관습의 문제라고 생각한다 . 내가 말할 수있는 한 기술적 이유 는 없다 .


79
이것은 아닙니다 매우 사실. 로 시작하는 text/MIME 유형은 다른 MIME 유형이 명시 적으로 선언되지 않는 한 ISO-8859-1로 처리됩니다 (예 :) text/html; charset=utf-8. 로 시작하는 application/MIME 유형은 다른 MIME 유형이 명시 적으로 선언되지 않는 한 UTF-8로 처리됩니다. 예를 들어, text/x-yamlUTF-8 문자 동안 사용할 수 없습니다 text/x-yaml; charset=utf-8application/x-yaml캔. IIRC, 이것은 RFC 3023에 정의되어 있습니다.
Ryan Parman 2011 년

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/yamlnor에 대한 공식적인 정의가 없으므로 text/x-yaml기본값은 UTF-8입니다.
aef

7
인코딩 처리를 포함한 RFC 3023은 tools.ietf.org/html/rfc7303#section-3에 의해 2014 년에 폐기되었습니다 . 기본적으로 규칙 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 1월 2013 년 어느 RFC 3023이나 RFC 7303 말 아무것도 일반 약에 text/*AFAIK.
aef

6
@RyanParman 그래서 당신의 결론은 아마도 정확했을 것입니다.하지만 당신은 RFC 3023을 실수로 참조했지만, 규칙은 RFC 2046에서 비롯되었습니다. 그러나 오늘날 은 IANA 등록에서 다른 것을 명시하지 않는 UTF-8모든 text/*미디어 유형 의 기본값입니다 .
aef

22

다른 답변이 수락되었지만 , 캠브리지 정보 서비스 대학의 Ben Harris가 2015 년 7 월에 YAML 팀을 대신하여 미디어 유형을 제안한 미디어 유형을 검토하려면 IANA 메일 링 목록에서 YAML 스레드에 대한 제안 된 미디어 유형 등록을 참조하십시오. :

text/vnd.yaml

더 이상 사용되지 않는 별칭 (권장) 포함 :

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

그것은 여전히 ​​제안 / 보류 중입니다 (스레드는 제안 상태를 나타내지 않습니다). 따라서이 답변은 다른 답변보다 더 명확하지 않습니다 :-)


11
제안은 2018 년 1 월 현재 아무데도 없어지고 저자와 연락하려는 시도는 응답이없는 것 같습니다
djb

15

나는 text / x-yaml이라고 말하고 싶습니다.

사람이 읽을 수 있기 때문에 응용 프로그램 위에 텍스트

x-yaml이 yaml에 비해 등록 된 MIME 유형 목록에 허용되지 않았기 때문입니다.

편집 : RFC 3023 (XML 미디어 유형)에서 :

최상위 미디어 유형 "텍스트"에는 MIME 엔티티에 대한 몇 가지 제한 사항이 있으며 [RFC2045] 및 [RFC2046]에 설명되어 있습니다. 특히 UTF-16 계열, UCS-4 및 UTF-32는 허용되지 않습니다 (MIME와 유사한 메커니즘을 사용하는 HTTP [RFC2616]을 통한 경우 제외).

흥미 롭군 ... 그게 무슨 뜻인지 정확히 모르겠지만 생각할만한 음식.


1
사람이 읽을 수 있지만 그 의도는 응용 프로그램을 전달하는 것입니다 ... XML은 적용 중입니다
Vinko Vrsalovic

또한 텍스트 아래. text / x-yaml 및 application / x-yaml이 모두 있어야하는 것 같습니다. rfc-editor.org/rfc/rfc3023.txt
Vinko Vrsalovic

그만한 가치는 Django의 TastyPie REST 구현이 이해하는 것입니다.
Michael Scheper

1
...하지만 JSON도 사람이 읽을 수 있습니까? 나는 application/yaml우리가 application/json그리고 말할 수있는 것처럼 말하는 것이 더 일관성이있을 것이라고 생각합니다 applicaiton/xml.
Anthony Rutledge 2019

7

"x-"미디어 유형은 권장되지 않습니다. RFC 4288, 섹션 3.4를 참조하십시오 . 해야 할 올바른 일은 개인 트리, 공급 업체 트리를 사용하거나 실제로 적절한 미디어 유형 등록을 시도하는 것입니다.


그래서 그것은 application/vnd.yaml또는 text/vnd.yaml(텍스트가 더 좋아 보인다)
wires

전적으로 사실이 아닙니다. IANA에 등록하지 않고 사용하기위한 유일한 하위 유형 트리는 x.. vnd.prs.등록이 필요합니다. tools.ietf.org/html/rfc6838#section-3.2tools.ietf.org/html/rfc6838#section-3.3을 참조 하세요 .
aef 2016 년

3

Chrome에서 application/yaml다운로드되고 text/yaml표시됩니다.


이것은 질문에 대한 답을 제공하지 않습니다. 평판 이 충분 하면 모든 게시물댓글 수 있습니다 . 대신 질문자의 설명이 필요하지 않은 답변을 제공하세요 . - 리뷰에서
ysf

2
@ysf 귀하의 의견은 지나치게 현학적입니다, IMO. 게시물은 간단하지만 누적되며 OP의 질문에 답변하고 각 옵션의 "이유"를 설명하며 제한 사항을 설명하기 위해 노력합니다 ( "... 적어도 Chrome에서는 이것이 사실입니다"). 이 정보. OP는 다른 Content-Type이 다른 행동을 초래할 수 있다는 것을 고려하지 않았을 수 있으며, 이는 그 또는 그녀에게 유용 할 수 있습니다.
Dan H

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.