支持数据服务的取消删除或延迟/批量删除是一个相当普遍的要求.我想知道的是如何以RESTful方式实现它.我在几个不同的选择之间徘徊(其中没有一个对我来说似乎非常有吸引力).我认为,这些不同选项的共同点是需要一个API,它返回标记为特定资源类型的已删除的所有资源.
以下是我考虑过的一些选项以及它们的一些优点/缺点:
将资源标记为已删除的选项:
GET-ing资源标记为删除时的选项:
包含此已删除资源的响应选项:
更新标记为删除的资源时的选项:
取消删除标记为删除的资源的选项:
这绝不是一份详尽的清单.我只是想列举一些在我脑海中蹦蹦跳跳的选项.
我知道如何做到这一点的答案就像往常一样,"它取决于".我很好奇的是你会用什么资格/要求做出决定?您是如何看待自己实施或实施的?
在REST中 - 可恢复的DELETE给出了关于如何在REST中建模状态变化的很好的介绍.基本上,如果您拥有具有字段状态的资源,则只需将该资源的新版本添加到更新状态字段.
在本主题中,我想扩展此模型.假设您有一个可以处于两种状态的资源:1和2.与引用帖子中描述的简单模型相比,有三个转换从状态1遍历到状态2,而不是仅仅一个.
我的问题是:你如何在REST中模拟状态转换?
我自己不能想出一个类似RPC的POST,它可能不是非常RESTian:
POST http://server/api/x
target_state=2&transition=3
Run Code Online (Sandbox Code Playgroud)
这通过使用转换3 将资源x从状态1 改变为状态2.