gpt4 book ai didi

http - 空表的正确 REST 响应?

转载 作者:可可西里 更新时间:2023-11-01 15:03:25 25 4
gpt4 key购买 nike

假设您想通过调用 GETapi/users 来获取用户列表,但目前该表已被截断,因此没有用户。此场景的正确响应是什么:404204

最佳答案

我会说,两者都不是。

为什么不是 404(未找到)?

404 状态代码应保留用于未找到资源的情况。在这种情况下,您的资源是一组用户。此集合存在,但目前为空。就我个人而言,作为您的应用程序客户端的作者,如果我一天收到 200 第二天收到 404 只是因为有人碰巧删除了,我会感到非常困惑几个用户。我应该做些什么?我的网址错了吗?是否有人更改了 API 而忽略了重定向。

为什么不是 204(无内容)?

这是来自 the description of the 204 status code by w3c 的摘录

The server has fulfilled the request but does not need to return an entity-body, and might want to return updated metainformation.

虽然在这种情况下这似乎是合理的,但我认为这也会让客户感到困惑。 204 应该表示某些操作已成功执行,不需要返回任何数据。这非常适合作为对 DELETE 请求的响应,或者可能触发一些不需要返回数据的脚本。对于 api/users,您通常希望收到用户集合的表示。一次发送响应正文而另一次不发送它是不一致的,并且可能会产生误导。

为什么我会使用 200(OK)

出于上述原因(一致性),我将返回一个空集合的表示。假设您正在使用 XML。非空用户集合的正常响应正文可能如下所示:

<users>
<user>
<id>1</id>
<name>Tom</name>
</user>
<user>
<id>2</id>
<name>IMB</name>
</user>
</users>

如果列表是空的,你可以用这样的东西来回应(同时仍然使用 200):

<users/>

无论哪种方式,客户端都会收到一个遵循某种众所周知格式的响应主体。没有不必要的混淆和状态代码检查。此外,没有违反状态代码定义。大家都很开心。

您可以对 JSON 或 HTML 或您正在使用的任何格式执行相同的操作。

关于http - 空表的正确 REST 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13366730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com