对于尚未提供的有效请求数据,正确的REST响应代码是什么?

时间:2016-07-14 09:35:09

标签: rest api-design

假设我们有一个这样的端点:

/user/my@email.com/notification

它返回由服务器生成的单个通知对象。 当您请求此URL时,可能会发生以下三种情况:

  1. 用户不存在,在这种情况下,我返回404

  2. 用户存在,并且存在通知。在这种情况下,我会在正文中返回200通知

  3. 用户存在,不存在任何通知。在这种情况下,我可以返回404 NOT FOUND204 NO CONTENT

  4. 我倾向于204

    404表示存在错误情况,此端点实际上是有效的,只是该对象现在不可用,但在2秒后再次请求时可能可用。 此外,您不是负责创建对象的人,因此您无法帮助解决问题。

1 个答案:

答案 0 :(得分:1)

我认为,您应该使用200 OK代替204 No Content回复。

以下是204的{​​{3}},它说:

  

204响应允许服务器指示操作已经发生      成功应用于目标资源,同时暗示了      用户代理不需要遍历其当前的“文档”      查看“(如果有的话)。

这意味着204代码意味着资源没有改变,或者对于手头的过程来说不重要。 意味着(至少没有明确表示)资源是“空的”(仅响应为空)。

响应404客观上是不正确的,因为资源存在。