HTTP GET 200 与 204

问题描述 投票:0回答:2

我们正在设计一个公共 API,并试图通过以下案例找出 GET 的最佳实践:

路径参数:

/orders/{orderId}

发现:200 个带有响应正文。
未找到:404。

查询参数:

/Products/{productId}/orders?color={color}

找到的订单:200 个,带响应正文。

未找到:在这种情况下应该是 200 还是 204 甚至 404?

我认为应该是200或204,因为本例中找到了资源,并且查询参数只是执行过滤效果。但在这种情况下我们应该返回 200 还是 204?

rest http http-status-code-404 http-status-code-200 http-status-code-204
2个回答
3
投票

假设

(1) 第一个 URL 仅针对一个订单。

(2) 第二个 URL 用于 0 个或更多订单的列表。


第一个响应中缺少订单应该是 404, 因为非订单不是订单。

第二个响应中缺少的订单应该是 200,,因为空列表仍然是列表。


0
投票

在您的查询参数网址 (/Products/{productId}/orders?color={color}) 中,客户端可以区分客户端提供的 ProductId 不存在和 ProductId 存在但没有任何订单,这将很有帮助“颜色”的颜色。

如果未找到productId,则应返回404。如果找到了productId,但没有订单,则带有空列表的200可以准确地描述这种情况。不要使用 204,因为 204 用于指示实际上有一个空响应,并且您返回一个空列表 []。

© www.soinside.com 2019 - 2024. All rights reserved.