【发布时间】:2016-06-24 02:10:12
【问题描述】:
如果您有一个接受多种格式的 REST 服务:
- JSON
- XML
- HTML 表单数据
是否存在广泛接受的“默认”内容类型或:
- 您可以根据最常见/最常见的用例自行选择
- 不接受缺失的内容类型,由消费者明确要求
例如,根据 W3C,通过 HTML 进行 POST 的默认内容类型是 application/x-www-form-urlencoded。
【问题讨论】:
标签: rest http mime-types
如果您有一个接受多种格式的 REST 服务:
是否存在广泛接受的“默认”内容类型或:
例如,根据 W3C,通过 HTML 进行 POST 的默认内容类型是 application/x-www-form-urlencoded。
【问题讨论】:
标签: rest http mime-types
我强烈建议服务器应该拒绝缺少或不适当的Content-Type 标头的请求。 RFC 7231 有明确的代码:
6.5.13。 415 不支持的媒体类型
415(不支持的媒体类型)状态码表示
源服务器拒绝为请求提供服务,因为有效负载
在目标资源上采用此方法不支持的格式。
格式问题可能是由于请求的指示
Content-Type 或 Content-Encoding,或作为检查的结果
直接数据。
尽管它没有明确提及 missing Content-Type,但这是公认的做法。见:HTTP status code for unaccepted Content-Type in request
【讨论】:
No 一边
正如您应该在响应中发送内容类型一样,您也应该期望在请求中有一个内容类型。
另外,期望正确的内容类型是很常见的,例如参见Jira REST API:
确保请求中的内容类型设置为“application/json”,如示例所示。
或Twilio,他们有一个接受的内容类型列表并说:
如果 content-type 标头与媒体不匹配,Twilio 将拒绝该请求。
我很确定Outlook Mail REST API 也需要正确设置。
所以,是的,我会说:“不要接受缺少的内容类型”。
【讨论】: