Web Services HTTP 406和415错误代码

az31mfrm  于 2022-12-27  发布在  其他
关注(0)|答案(5)|浏览(253)

我正在编写一个只接受json的web服务,并且也只输出json。
因此,如果请求任何其他格式,我需要返回适当的状态代码。
看来我有两个选择

  1. 406-不可接受
  2. 415-不支持的媒体类型
    如果有人能启发我这两个代码的语义,那就太好了。
bis0qfac

bis0qfac1#

406是服务器在无法基于接受请求头做出响应时返回的(即它们有一个Accept头,声明它们 only want XML)。
当请求中发送的实体(POST或PUT中的内容)具有不支持的媒体类型(即它们发送XML)时,服务器返回415。
所以..406当你不能发送他们想要的东西时415当他们发送你不想要的东西时

9fkzdhlc

9fkzdhlc2#

  • 406如果发送了Accept标头,则无法填写。
  • 415如果发送的是Content-Type,则无法使用。
t1qtbnec

t1qtbnec3#

引用RFC2616
406不可接受
请求所标识的资源只能生成响应实体,这些响应实体具有根据请求中发送的接受标头不可接受的内容特征。
当客户端查询您的服务时,检查它发送了什么Accept*头;如果它不匹配application/json(或者通配符,例如*/*),返回this,响应应该显示"我们这里只提供JSON"。
415不支持的媒体类型
服务器拒绝为请求提供服务,因为请求的实体格式不受请求方法的请求资源支持。
仅仅返回415 Unsupported Media Type应该是对"客户端发送了非JSON的内容,无法处理该内容"的最小响应;不确定是否有标头指示"您需要发送JSON"

fkvaft9z

fkvaft9z4#

当客户端使用Accept头请求不支持的内容类型(在您的情况下,是JSON以外的任何类型)的响应时,将使用406。另一方面,当客户端以不支持的内容类型POST或PUT数据时,将使用415。
简而言之:如果无法以预期格式输出,请使用406;如果不支持输入格式,请使用415。
有关其定义,请参见RFC 2616:406和415

rggaifut

rggaifut5#

RFC 2616帮助您!
http://www.rfc2616.com/#10.4.7
http://www.rfc2616.com/#10.4.16
我会选415,它很符合你的描述。
编辑:Oh. IC.“request 的实体格式不被请求的资源”支持。所以如果你有一个包含内容的请求,而内容的类型是错误的,你应该抛出415 -response。

相关问题