java - 如果正文中传递的 id 不存在/无效,请更正 http 错误代码?

标签 java rest jersey jax-rs jersey-2.0

如果正文中指示的 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/

相关文章:

java - 如何将变量解析为参数

java - 如何使用 Neo4j Ha 集群配置 Spring?

java - 从客户端将文件作为参数发送到 REST 服务?

authentication - 在Jersey Jax-rs Web服务上启用OAuth1支持

java - 分析具有未知架构的 XML

api - 生成REST API文档的最佳方法是什么?

django - 这个20MB的json响应性能怎么样?

java - 如何在java中从Jersey模拟requestContext.getUriInfo().getPathParameters()

java - Jersey 响应的原因短语在 tomcat 7 和 8.5 中不一致

java - 应该使用哪个集合来存储内存中的xml文件?