我正在编写仅接受json,并且仅输出json的网络服务。
因此,如果需要任何其他格式,我需要返回适当的状态代码。
看来我有两个选择:
- 406-不可接受
- 415-不支持的媒体类型
如果有人能启发我这两个代码的语义,那将是非常不错的。
Answers:
引用RFC2616:
406不可接受
由请求标识的资源仅能够生成响应实体,该响应实体具有根据请求中发送的接受标头不可接受的内容特征。
当客户端查询您的服务时,请检查Accept*
其发送了哪些标头;如果不匹配application/json
(或通配符,例如*/*
),则返回此值。响应应指示“我们仅在此处提供JSON”。
415不支持的媒体类型
服务器拒绝为请求提供服务,因为请求的实体的格式不受请求的方法所请求的资源支持。
仅仅返回415 Unsupported Media Type
应该是“客户端发送的不是JSON的东西,不能使用它的东西”的最小响应。不知道是否有标题指示“您需要发送JSON”
RFC2616可以帮助您!
http://www.rfc2616.com/#10.4.7
http://www.rfc2616.com/#10.4.16
我会选择415,它非常适合您的描述。
编辑:哦。我知道了。“请求的实体的格式不受请求的资源支持”。因此,如果您有一个包含内容的请求,并且该内容的类型错误,则应抛出415-响应。