在尝试删除资源时是否有必要返回“404 Not Found”?

时间:2017-02-15 22:43:21

标签: rest restful-architecture

我正在考虑在客户端尝试删除用户时是否有必要使用User doesn't exist状态代码返回404消息。

  • 如果我们要删除用户,那么返回User doesn't exist消息的重点是什么?

  • 如果我们想知道用户是否存在,我们会使用GET方法而不是DELETE方法吗?如果用户之前不存在,那么它将不会显示在列表中,您希望如何删除它?

  • 假设我在浏览器上打开了两个标签,然后我在第一个标签中删除了该用户,现在我正在尝试删除第二个标签中的同一个用户,如果我获得200 OK状态还是404 Not Found

用户不再存在,这不是我想要的吗?对我来说不应该是OK吗?

1 个答案:

答案 0 :(得分:1)

作为一般规则,当您尝试GET不存在的资源时,应返回404(如果需要,还应返回消息)。

当您尝试DELETE资源时,意图是“此资源在此调用后不应存在”,您应该始终返回2XX代码(如果没有内容则为204 - 一般情况 - ,或者200/202是您的选择)。资源已被删除或从未存在的事实与意图不冲突,因此返回404是没有用的。

希望这有帮助。