从检索和列表中删除资源的真正休息方法是什么?

What is the true rest method to delete resource from retrieving and listing?

在我们的terms of service中我们说过用户分享的内容是绝对不会删除的。我们只想从搜索、检索和列表中删除。但是资源应该保留在我们的数据库中(就像 StatckOverflow 所做的那样)删除问题(它可以取消删除)。

哪个场景更RESTful做这个:

如果您允许用户删除他们的内容但不允许他们取消删除,那么就他们而言,内容将被删除。使用 "deleted" 属性存储它正是您实现删除的方式,与 API.

的用户无关

这表明第一个选项是合适的。使用 DELETE 并将 is_delete 字段更改为 true 并更改搜索 SQL 以忽略 "deleted".

中的所有内容

如果用户可以取消删除,那么他们一开始并没有真正删除,PATCH 可能更适合将 is_deletefalse 更改为 true 并且反之亦然。他们会将资源 PATCH 转换为不同的状态,这实际上是 "invisible" 状态,而不是将其删除。如果您希望实现 "permanently delete".

,那么您可以像上面那样通过 DELETE 请求自由地实现真正的 "delete"