我正在编写一个只接受json的Web服务,并且只输出json。
如果要求任何其他格式,我需要返回适当的状态代码。
看来我有两个选择:
如果有人可以启发我关于这两个代码的语义,那将会很棒。
答案 0 :(得分:118)
415。
所以.. 406当你无法发送他们想要的东西时,415当他们发送你不想要的东西时。
希望有所帮助!
答案 1 :(得分:37)
Accept
标题,则无法满足。Content-Type
则无法使用。答案 2 :(得分:7)
引用RFC2616:
406不可接受
请求标识的资源 只能产生反应 有内容的实体 特征不可接受 根据发送的接受标头 在请求中。
当客户端查询您的服务时,请检查它发送的Accept*
标头;如果它与application/json
(或通配符,例如*/*
)不匹配,请返回此值。响应应该表明“我们只在这里提供JSON”。
415不支持的媒体类型
服务器拒绝为其提供服务 请求因为实体的 请求的格式不受支持 由所请求的资源 要求的方法。
只返回415 Unsupported Media Type
应该是“客户端发送的东西不是JSON的最小响应,不能用于”;不确定是否有标题表示“你需要发送JSON”
答案 3 :(得分:4)
406。另一方面,当客户端以不支持的内容类型POST或PUT数据时,使用415。
简而言之:如果无法以预期格式输出,请使用406,如果不支持输入格式,请使用415.
答案 4 :(得分:-2)
RFC2616可以帮助您!
http://www.rfc2616.com/#10.4.7
http://www.rfc2616.com/#10.4.16
我会选择415,它很适合你的描述。
编辑:哦。我知道了。 “请求的实体采用所请求资源不支持的格式”。因此,如果您有内容请求且内容类型错误,则应抛出415响应。