HTTP 406和415错误代码

rmk*_*rmk 64 web-services http http-headers

我正在编写一个只接受json的Web服务,并且只输出json.

因此,如果请求任何其他格式,我需要返回适当的状态代码.

看来我有两个选择:

  1. 406 - 不可接受
  2. 415 - 不支持的媒体类型

如果有人能够启发我关于两个代码的语义,那将是很棒的.

nat*_*han 126

当服务器无法响应时,服务器返回406基于接受请求标头(即它们有一个Accept标头,表明它们需要XML).

当在请求中发送的实体(POST或PUT中的内容)具有不支持的媒体类型(即,他们发送XML)时,服务器返回415.

所以.. 406当你无法发送他们想要的东西时,415当他们发送你不想要的东西时.

希望有所帮助!


Wri*_*ken 39

  • 406如果Accept发送了标题,则无法满足.
  • 415如果Content-Type发送,则无法使用.


Pis*_*3.0 7

引用RFC2616:

406不可接受

由请求标识的资源仅能够根据请求中发送的接受报头生成具有不可接受的内容特征的响应实体.

当客户端查询您的服务时,请检查Accept* 它发送的标头; 如果它不匹配application/json(或通配符,例如*/*),则返回此项.响应应该表明"我们只在这里提供JSON".

415不支持的媒体类型

服务器拒绝为请求提供服务,因为请求的实体采用所请求方法的请求资源不支持的格式.

刚回来415 Unsupported Media Type应该是"客户发送的东西不是JSON,不能与之合作"的最小响应; 不确定是否有标题表示"你需要发送JSON"


Vic*_*ing 5

当客户端使用 Accept 标头请求不支持的内容类型(在您的情况下为 JSON 以外的任何类型)的响应时,将使用 406。另一方面,当客户端以不受支持的内容类型 POST 或 PUT 数据时,将使用 415。

简而言之:如果无法以预期格式输出,则使用 406;如果不支持输入格式,则使用 415。

请参阅 RFC 2616 了解其定义:406415