2

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

我们面临的挑战:

  1. 当 API 上的对象被完全删除时,客户端将不知道该对象已消失并将其保留在本地(因为 API 仅显示在特定日期之后更改的对象)
  2. 如果我们启用对象的属性以显示已删除(例如“deleted = TRUE”),那么最终 API 中的对象数量会增长并减慢传输速率。

我们研究的另一个选项是在 API 上设置单独的端点以仅显示已删除对象的列表(这是任何人都使用的模式吗?)。

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

4

3 回答 3

2

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

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

于 2012-07-22T23:37:04.493 回答
1

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

于 2012-07-22T23:35:40.613 回答
0

如果您认为您的资源不是一个列表,而是一个变更集怎么办?

例如。更改您在 git 或 SVN 中的内容。

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

这样你就可以通过检查/使用版本控制系统来应用你学到的任何东西。

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

于 2012-07-22T23:43:48.023 回答