Rest 当子资源不存在时,可以返回404吗?

Rest 当子资源不存在时,可以返回404吗?,rest,api,Rest,Api,想象一下,有一个web应用程序可以让你管理聊天室服务器&其中的聊天室。每台服务器可以承载零个或多个聊天室。当服务器没有聊天室时,应用程序的后端api(app/server7/chattrooms)会向UI返回404。然后,UI显示“此服务器中没有聊天室,请单击此处创建一些。”但是,当存在一些聊天室时,它会返回聊天室列表和有关聊天室的信息 对我来说,这似乎是个糟糕的设计。比如说,如果我们在服务器中创建聊天室,但是后端实际上没有创建聊天室,或者聊天室资源被删除等等。那么,UI将错误地认为没有聊天室

想象一下,有一个web应用程序可以让你管理聊天室服务器&其中的聊天室。每台服务器可以承载零个或多个聊天室。当服务器没有聊天室时,应用程序的后端api(app/server7/chattrooms)会向UI返回404。然后,UI显示“此服务器中没有聊天室,请单击此处创建一些。”但是,当存在一些聊天室时,它会返回聊天室列表和有关聊天室的信息

对我来说,这似乎是个糟糕的设计。比如说,如果我们在服务器中创建聊天室,但是后端实际上没有创建聊天室,或者聊天室资源被删除等等。那么,UI将错误地认为没有聊天室

我认为聊天室资源应该在创建服务器时创建。此外,聊天室调用应该返回零元素列表,而不是404


我的推理正确吗?

根据您对服务器和聊天室之间关系的定义,服务器将始终具有聊天室数量的定义(0或更多,不为空),因此,在这种特定情况下,最好在创建服务器资源时创建聊天室资源,并在用户调用聊天室api端点时返回0

这将允许您:

  • 不要因为API端点的结构发生了变化而感到困惑
  • 不要与服务器实际上不存在的情况混淆。例如,api/server/\u一些不存在的\u服务器\u id/聊天室

另一方面,如果您想继续使用404错误,最好返回一个包含更多详细信息的响应正文。

我不会从服务器返回404,而是更多地检查服务器上是否存在404错误,以及如果没有聊天室,您自己的处理方式。就像返回数字0或其他对象一样。