【发布时间】:2015-06-18 11:31:32
【问题描述】:
如果对休息服务的调用执行数据库查询,但未找到结果并返回,则返回代码的最佳做法是什么。
这应该是 404 还是 200,并显示没有记录的消息?
URL 已正确解析,没有发生服务器错误,只是没有返回任何记录。
编辑: 示例网址为:
http://localhost/app/pr_xyz/1234
用于检索属于现有用户 1234 的 xyz 列表。用户 id 1234 已被检索并且已知存在于数据库中。此 URL (pr_xyz) 只是为了检索属于该用户的 xyz 列表。
关系是 1 个用户与 0 个或多个 xyz。
在这种情况下,现有用户没有 xyz。这应该是带有有意义消息的 404 还是 200。
我也无法控制 URL。
【问题讨论】:
-
200 在我看来,有一个有意义的信息
-
不。不是200。如果找不到资源,应该是404。见Is it correct to return 404 when a REST resource is not found?。
-
@peeskillet 在这种情况下可以找到资源并正确执行。其余服务正确解析只是查询的结果是没有记录。您发布的链接讨论了检索服务以及找不到服务时该怎么办,当然应该是 404。
-
您将什么定义为“资源”?你的意思是 JAX-RS “方法” 吗?方法本身不是资源。资源是应该从特定 URI 返回的内容。假设 URI 是
../users/123。资源是用户,由该 URI 标识。如果找不到用户,它应该是 404。这是一般用例,123可能是 URI 模板的一部分。 JAX-RS 方法处理对@Path("users/{id}")的所有请求。此方法处理尝试查找不同资源的尝试,具体取决于 id。如果找不到 == 404 -
该链接与查找服务无关。我认为您的主要困惑是您将 "method" 或 JAX-RS 休息服务端点视为“资源”,但事实并非如此。
标签: rest http jakarta-ee