由于请求不正确,无法更正结果的状态代码

时间:2015-03-25 17:28:01

标签: rest http-status-codes

我有一个带有几个参数的GET资源,让我们称之为CompanyId和CategoryId

如果CompanyId或CategoryId是无效值(即:CompanyId或CategoryId不存在),或者它们是否有效,则此资源不会返回任何结果,但我们只是没有有他们的任何数据。

我希望客户能够区分这两种情况,所以简单地返回一个没有数据的空200或204并不合适。

一种方法就是返回一个带有&#34消息的200; ID为Id的公司不存在,但这对我来说就像客户端错误一样,他们提供的数据不正确。

使用422' Unprocessable Entity'是否合适?在这种情况下?

2 个答案:

答案 0 :(得分:0)

如果您的请求不成功,则不应使用状态代码2xx。

我宁愿返回状态代码400,其中包含描述问题的有效负载(查询参数xx是必需的)。

如果使用方法POST或PUT发送有效负载,我会使用状态422。

希望它对你有所帮助。 亨利

答案 1 :(得分:0)

4xx范围内的HTTP响应代码用于请求中的错误,与服务器错误后应发送的5xx不同。

也许简单来说:4xx如果客户端或其请求不好,如果服务器端出现问题则为500.

400错误请求是此类活动的标准和规范状态代码。

默认情况下,网络服务器,网络框架和浏览器都会将400理解为 错误请求 ,但您还应该在响应正文中提供一条消息,说明哪些内容不好由客户。

通过Wikipedia article查看此W3C或此内容。