【问题标题】:Correctness of Creating Custom Content-Type?创建自定义内容类型的正确性?
【发布时间】:2014-04-16 20:37:46
【问题描述】:
我正在编写一个查看内容类型(例如application/json)以确定处理的应用程序。大多数时候,Content-Type 是众所周知的。但是,有时创建自定义 Content-Type(例如 application/swagger' ortext/raml' 或 yaml/raml')会很方便。创建自定义 Content-Type 的后果是什么?如果我想将它们作为 HTTP 响应发送,浏览器如何处理它们?我用text/swagger还是application/swagger有关系吗?
【问题讨论】:
标签:
mime-types
content-type
asp.net-web-api
【解决方案1】:
有关创建自定义或实验性 Content-Type 标识符的指南,请参阅 rfc6648。
从历史上看,建议是在标识符前面加上“x-”,但这已被弃用。听起来最好的做法是尝试确保您正在注册自定义媒体类型或使用已经注册的媒体类型(即使它是实验性的)
至于是使用text/swagger 还是application/swagger,我建议将其基于Swagger 使用的媒体类型JSON,并且由于JSON 被标识为application/json,那么Swagger 将类似于application/swagger+json . Swagger 还可以包含 JSON Schema,其标识为 application/schema+json
实际上已经有一个 discussion on the Swagger mailing list 包含对 application/swagger+json 的提案
【解决方案2】:
浏览器(不知道 chrome 和 chromera(opera next))有配置来定义对 mime 类型的操作。如果您的内容必须由浏览器直接解析(即 (x)(ht)ml、css、images..),它应该包含正确的 mime 类型(即“image/jpeg”,如果你想显示 jpeg 图像,如果你发送你好/天哪,你不能指望浏览器会显示正确的页面,而是会显示一些“下载”对话框窗口或类似的东西)。
内容 mime 类型应涵盖 rfc2046:https://www.rfc-editor.org/rfc/rfc2046