从检索和列表中删除资源的真正休息方法是什么?
What is the true rest method to delete resource from retrieving and listing?
在我们的terms of service
中我们说过用户分享的内容是绝对不会删除的。我们只想从搜索、检索和列表中删除。但是资源应该保留在我们的数据库中(就像 StatckOverflow 所做的那样)删除问题(它可以取消删除)。
哪个场景更RESTful
做这个:
场景 1:
- 添加
is_delete
和 False
默认数据库模型。
- 发送
DELETE
请求并更改模型 is_deleted
字段而不是真正的删除。 (200
或 204
状态码)
场景二:
- 添加
is_delete
和 False
默认数据库模型。
- 发送
PATCH
请求并改为更改模型 is_deleted
字段。 (再次200
或204
)
如果您允许用户删除他们的内容但不允许他们取消删除,那么就他们而言,内容将被删除。使用 "deleted" 属性存储它正是您实现删除的方式,与 API.
的用户无关
这表明第一个选项是合适的。使用 DELETE
并将 is_delete
字段更改为 true
并更改搜索 SQL
以忽略 "deleted".
中的所有内容
如果用户可以取消删除,那么他们一开始并没有真正删除,PATCH 可能更适合将 is_delete
从 false
更改为 true
并且反之亦然。他们会将资源 PATCH
转换为不同的状态,这实际上是 "invisible" 状态,而不是将其删除。如果您希望实现 "permanently delete".
,那么您可以像上面那样通过 DELETE
请求自由地实现真正的 "delete"
在我们的terms of service
中我们说过用户分享的内容是绝对不会删除的。我们只想从搜索、检索和列表中删除。但是资源应该保留在我们的数据库中(就像 StatckOverflow 所做的那样)删除问题(它可以取消删除)。
哪个场景更RESTful
做这个:
场景 1:
- 添加
is_delete
和False
默认数据库模型。 - 发送
DELETE
请求并更改模型is_deleted
字段而不是真正的删除。 (200
或204
状态码)
- 添加
场景二:
- 添加
is_delete
和False
默认数据库模型。 - 发送
PATCH
请求并改为更改模型is_deleted
字段。 (再次200
或204
)
- 添加
如果您允许用户删除他们的内容但不允许他们取消删除,那么就他们而言,内容将被删除。使用 "deleted" 属性存储它正是您实现删除的方式,与 API.
的用户无关这表明第一个选项是合适的。使用 DELETE
并将 is_delete
字段更改为 true
并更改搜索 SQL
以忽略 "deleted".
如果用户可以取消删除,那么他们一开始并没有真正删除,PATCH 可能更适合将 is_delete
从 false
更改为 true
并且反之亦然。他们会将资源 PATCH
转换为不同的状态,这实际上是 "invisible" 状态,而不是将其删除。如果您希望实现 "permanently delete".
DELETE
请求自由地实现真正的 "delete"