如果正文中指示的 id 不存在,正确的 http 错误代码是什么?
例子:cityId 123 在数据库中不存在
POST /profiles
{
"name":"foo",
"cityId":123
}
是404吗? 400?还是 422?
最佳答案
最后由你决定,但我会说 422。
400 意味着请求格式不正确,但事实并非如此。该请求在词法上完全有效,因此您可以正常解析和处理它。
http://www.restpatterns.org/HTTP_Status_Codes/400_-_Bad_Request
404 表示请求的 URL 不存在。资源(即 Web 服务端点)确实存在。如果 id 是 URL 的一部分,即在查询字符串中,我可能会建议不同的答案。根据我的经验,404 仅指 URL,而不是指发布的主体。另请注意,下面的链接仅在 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
关于java - 如果正文中传递的 id 不存在/无效,请更正 http 错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40439663/