我正在编写一个只接受json的web服务,并且也只输出json。因此,如果请求任何其他格式,我需要返回适当的状态代码。看来我有两个选择
bis0qfac1#
406是服务器在无法基于接受请求头做出响应时返回的(即它们有一个Accept头,声明它们 only want XML)。当请求中发送的实体(POST或PUT中的内容)具有不支持的媒体类型(即它们发送XML)时,服务器返回415。所以..406当你不能发送他们想要的东西时415当他们发送你不想要的东西时
9fkzdhlc2#
Accept
Content-Type
t1qtbnec3#
引用RFC2616:406不可接受请求所标识的资源只能生成响应实体,这些响应实体具有根据请求中发送的接受标头不可接受的内容特征。当客户端查询您的服务时,检查它发送了什么Accept*头;如果它不匹配application/json(或者通配符,例如*/*),返回this,响应应该显示"我们这里只提供JSON"。415不支持的媒体类型服务器拒绝为请求提供服务,因为请求的实体格式不受请求方法的请求资源支持。仅仅返回415 Unsupported Media Type应该是对"客户端发送了非JSON的内容,无法处理该内容"的最小响应;不确定是否有标头指示"您需要发送JSON"
Accept*
application/json
*/*
415 Unsupported Media Type
fkvaft9z4#
当客户端使用Accept头请求不支持的内容类型(在您的情况下,是JSON以外的任何类型)的响应时,将使用406。另一方面,当客户端以不支持的内容类型POST或PUT数据时,将使用415。简而言之:如果无法以预期格式输出,请使用406;如果不支持输入格式,请使用415。有关其定义,请参见RFC 2616:406和415
rggaifut5#
RFC 2616帮助您!http://www.rfc2616.com/#10.4.7http://www.rfc2616.com/#10.4.16我会选415,它很符合你的描述。编辑:Oh. IC.“request 的实体格式不被请求的资源”支持。所以如果你有一个包含内容的请求,而内容的类型是错误的,你应该抛出415 -response。
5条答案
按热度按时间bis0qfac1#
406是服务器在无法基于接受请求头做出响应时返回的(即它们有一个Accept头,声明它们 only want XML)。
当请求中发送的实体(POST或PUT中的内容)具有不支持的媒体类型(即它们发送XML)时,服务器返回415。
所以..406当你不能发送他们想要的东西时415当他们发送你不想要的东西时
9fkzdhlc2#
Accept
标头,则无法填写。Content-Type
,则无法使用。t1qtbnec3#
引用RFC2616:
406不可接受
请求所标识的资源只能生成响应实体,这些响应实体具有根据请求中发送的接受标头不可接受的内容特征。
当客户端查询您的服务时,检查它发送了什么
Accept*
头;如果它不匹配application/json
(或者通配符,例如*/*
),返回this,响应应该显示"我们这里只提供JSON"。415不支持的媒体类型
服务器拒绝为请求提供服务,因为请求的实体格式不受请求方法的请求资源支持。
仅仅返回
415 Unsupported Media Type
应该是对"客户端发送了非JSON的内容,无法处理该内容"的最小响应;不确定是否有标头指示"您需要发送JSON"fkvaft9z4#
当客户端使用Accept头请求不支持的内容类型(在您的情况下,是JSON以外的任何类型)的响应时,将使用406。另一方面,当客户端以不支持的内容类型POST或PUT数据时,将使用415。
简而言之:如果无法以预期格式输出,请使用406;如果不支持输入格式,请使用415。
有关其定义,请参见RFC 2616:406和415
rggaifut5#
RFC 2616帮助您!
http://www.rfc2616.com/#10.4.7
http://www.rfc2616.com/#10.4.16
我会选415,它很符合你的描述。
编辑:Oh. IC.“request 的实体格式不被请求的资源”支持。所以如果你有一个包含内容的请求,而内容的类型是错误的,你应该抛出415 -response。