ric*_*oon 5 java rest jax-rs jersey jersey-2.0
如果正文中指示的 id 不存在,正确的 http 错误代码是什么?
示例:cityId 123 在数据库中不存在
POST /profiles
{
"name":"foo",
"cityId":123
}
Run Code Online (Sandbox Code Playgroud)
是404吗?400?还是422?
最终取决于你,但我会说 422。
400 表示请求格式错误,但事实并非如此。该请求在词法上完全有效,因此您可以正常解析和处理它。
http://www.restpatterns.org/HTTP_Status_Codes/400_-_Bad_Request
404 表示请求的 URL 不存在。资源(即 Web 服务端点)确实存在。如果 id 是 URL 的一部分,即在查询字符串中,我可能会建议不同的答案。404 仅在我的经验中指 URL,而不是 POSTed 正文。另请注意,下面的链接仅在 URL 上下文中引用 404,而不是 POST 正文的内容。
http://www.restpatterns.org/HTTP_Status_Codes/404_-_Not_Found
因此,这使 422 成为唯一有效的候选者。
http://www.restpatterns.org/HTTP_Status_Codes/422_-_Unprocessable_Entity
另一位发帖人建议 204,但这是不正确的,因为请求已处理,但未成功。所有 2** 状态代码都意味着一定程度的成功。
http://www.restpatterns.org/HTTP_Status_Codes/204_-_No_Content
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |