我有一个带有几个参数的GET资源,让我们称之为CompanyId和CategoryId
如果CompanyId或CategoryId是无效值(即:CompanyId或CategoryId不存在),或者它们是否有效,则此资源不会返回任何结果,但我们只是没有有他们的任何数据。
我希望客户能够区分这两种情况,所以简单地返回一个没有数据的空200或204并不合适。
一种方法就是返回一个带有&#34消息的200; ID为Id的公司不存在,但这对我来说就像客户端错误一样,他们提供的数据不正确。
使用422' Unprocessable Entity'是否合适?在这种情况下?
答案 0 :(得分:0)
如果您的请求不成功,则不应使用状态代码2xx。
我宁愿返回状态代码400,其中包含描述问题的有效负载(查询参数xx是必需的)。
如果使用方法POST或PUT发送有效负载,我会使用状态422。
希望它对你有所帮助。 亨利
答案 1 :(得分:0)
4xx范围内的HTTP响应代码用于请求中的错误,与服务器错误后应发送的5xx不同。
也许简单来说:4xx如果客户端或其请求不好,如果服务器端出现问题则为500.
400错误请求是此类活动的标准和规范状态代码。
默认情况下,网络服务器,网络框架和浏览器都会将400理解为 错误请求 ,但您还应该在响应正文中提供一条消息,说明哪些内容不好由客户。
通过Wikipedia article查看此W3C或此内容。