使用REST API删除本地/客户端对象的常用方法是什么?

时间:2012-07-22 23:31:58

标签: json web-services api rest restful-architecture

是否有通用设计模式将已删除的对象分派给请求者(API的客户端)?

我们遇到的挑战:

  1. 当完全删除API上的对象时,客户端将不知道 该对象已经消失并将在本地保留(因为API仅显示在特定日期之后更改的对象)
  2. 如果我们启用对象的属性以显示已删除(例如“deleted = TRUE”),那么 最终,API中的对象数量会增加并降低传输速率。
  3. 我们研究的另一个选项是在API上使用单独的端点来显示已删除对象的列表(这是任何人使用的模式吗?)。

    我正在寻找删除本地对象的最“RESTful方式”。

3 个答案:

答案 0 :(得分:2)

我处理它的方式是#1的变体:每个项目在数据库中都有一个last updated字段,如果删除了某些内容,我会在另一个已删除项目表中创建一个条目,并且它已更新值是删除时的值。

客户端发出请求“自X以来的更改”的请求,这是他们自己的本地存储的last updated值...它返回新数据和一系列已删除的项目。然后在客户端上我清除那些值

答案 1 :(得分:1)

陈旧数据始终是客户端/服务器应用程序的问题。如果客户端加载了一些数据,那么在服务器上删除了一些对象,然后客户端发送DELETE请求,RESTFul要做的就是返回404,表示“未找到”。如果客户端知道如果它发送DELETE并获得404,则资源正在从下面删除...

答案 2 :(得分:0)

如果您认为您的资源不是列表,而是将其视为变更集,该怎么办?

EG。更改git或SVN中的内容。

这样,总有一个“头”版本,客户端总是有一些版本,资源是客户端的最后一个版本和头部版本之间的变化。

通过检查/使用版本控制系统,您可以应用您学到的任何内容。

如果你需要更复杂的东西,背后的科学被称为操作转换(OT) - http://en.wikipedia.org/wiki/Operational_transformation