REST - HTTP DELETE - 语义 - 仅删除后代

App*_* S. 5 rest http http-delete

在我们的项目中,可以通过REST检索所有书籍的列表:

GET http://server/api/books/
Run Code Online (Sandbox Code Playgroud)

可以检索特定书籍如下:

GET http://server/api/books/:id/
Run Code Online (Sandbox Code Playgroud)

删除特定的书很容易:

DELETE http://server/api/books/:id/
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是:以下调用的结果应该是什么:

DELETE http://server/api/books/
Run Code Online (Sandbox Code Playgroud)

显然,所有书籍都被删除了.但是资源书/是否应该被删除?也就是说,在请求之后:

  1. 应该GET/books /返回200 OK和空列表?要么
  2. 应该获得GET/books/return 404吗?

根据规格说明具体的URI将会消失,我会选择第二种选择.然而,在我看来,这使得事情变得复杂和不合逻辑.拥有一个空的书籍清单更有意义,而不是没有书籍.

你怎么看?

Jim*_*Jim 0

然而,这使得事情变得复杂且不合逻辑

如何?您请求删除资源。该资源已被删除。结果是它已经不存在了。

如果有的话,删除它后它仍然存在会令人困惑。