作者:手机用户2402852307 | 2023-09-02 13:08
在通过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
Vinko Vrsalo..
59
Ruby on Rails使用(source)application/x-yaml
替代.text/yaml
我认为这只是一个惯例问题,据我所知,没有技术上的原因.
1> Vinko Vrsalo..:
Ruby on Rails使用(source)application/x-yaml
替代.text/yaml
我认为这只是一个惯例问题,据我所知,没有技术上的原因.
这不是_quite_ true.除非明确声明另一个mime类型(例如`text/html; charset = utf-8`),否则以`text /`开头的Mime类型将被处理为ISO-8859-1.除非显式声明另一个mime类型,否则以`application /`开头的Mime类型将被处理为UTF-8.例如,`text/x-yaml`不能使用UTF-8字符而`text/x-yaml; charset = utf-8`和`application/x-yaml`可以.IIRC,这在RFC 3023中定义.
RFC 3023(包括编码处理)已于2014年由https://tools.ietf.org/html/rfc7303#section-3废弃.对于RFC 2046中的`text/*`媒体类型,默认为"US-ASCII"(注意:不是`ISO-8859-1`)的规则已被废弃."无论选择何种方法,所有新文本/*注册必须明确说明如何确定字符集; 在2013年1月的https://tools.ietf.org/html/rfc6838#section-4.2.1中,不再允许依赖于[RFC2046]第4.1.2节中定义的US-ASCII默认值.无法通过RFC 3023 RFC 7303也没有说出关于`text/*`AFAIK的一般信息.
@RyanParman所以你的结论可能是正确的,但你错误地引用了RFC 3023,而规则来自RFC 2046.今天,`UTF-8`是每个`text/*`媒体类型的默认值在IANA注册中有所不同.
@RyanParman不对.https://tools.ietf.org/html/rfc6838#section-4.2.1说:`如果指定了"charset"参数,它应该是必需参数,从而消除了指定默认值的选项.如果有一个强有力的理由让参数尽可能是可选的,那么每个子类型都可以指定它自己的默认值,或者它可以指定没有默认值.最后,应该选择"UTF-8"字符集[RFC3629]作为默认值."text/yaml"和"text/x-yaml"没有正式定义,因此默认值为UTF-8.
@RyanParman你有点混淆字符集和MIME类型.你是对的,没有明确的`charset =`参数的`text/*`被认为是ISO-8859-1,但`application/*`中的东西不一定是文本.(您链接的RFC是关于XML的,不确定它是如何相关的.)
2> djb..:
虽然另一个答案被接受,请参阅本为YAML提议的媒体类型的注册线程IANA邮件列表上审查媒体类型在本哈里斯,剑桥信息服务,大学提出的代表YAML队的媒体类型的2015年7月:
text/vnd.yaml
使用(建议)弃用的别名:
text/yaml
text/x-yaml
application/x-yaml
那仍然是提议/待决(线程没有表明提案的状态)所以这个答案不比其他人更明确:-)
从2018年1月开始,该提案似乎无处可去,我与作者联系的尝试没有得到答复
3> Greg..:
我会说text/x-yaml:
应用程序上的文本因为它是人类可读的
yaml上的x-yaml因为它尚未被接受到mime类型的注册列表中.
编辑:来自RFC 3023(XML媒体类型):
顶级媒体类型"text"对MIME实体有一些限制,它们在[RFC2045]和[RFC2046]中有所描述.特别是,不允许使用UTF-16系列,UCS-4和UTF-32(除了HTTP [RFC2616],它使用类似MIME的机制).
有趣......不完全确定它意味着什么,但值得深思.
4> Julian Resch..:
不鼓励使用"x-"媒体类型,请参阅RFC 4288,第3.4节.正确的做法是使用个人树,供应商树,或实际尝试正确的媒体类型注册.