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



在我们的terms of service中,我们说过用户共享的内容永远不会删除。我们只想从搜索、检索和列表中删除。但资源应该保留在我们的数据库中(就像StatckOverflow一样(,用于删除问题(它可以取消删除任何一个(。

哪个场景更适合RESTful

  • 场景1

    • 将默认为Falseis_delete添加到数据库模型中
    • 发送DELETE请求并更改型号is_deleted字段,而不是真正删除。(200204状态代码(
  • 场景2

    • 将默认为Falseis_delete添加到数据库模型中
    • 发送PATCH请求,改为更改型号is_deleted字段。(再次为200204(

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

这表明第一种选择是合适的。使用DELETE,将is_delete字段更改为true,并将搜索SQL更改为忽略所有已"删除"的内容。

如果用户可以取消删除,那么他们一开始就不是真正的删除,PATCH可能更适合将is_deletefalse更改为true,反之亦然。他们将PATCH将资源转换为不同的状态,本质上是"不可见"状态,而不是删除它。如果您希望实现"永久删除",则可以通过DELETE请求自由实现真正的"删除",如上所述。

最新更新