RESTful "archiving" 个条目的实现

RESTful implementation for "archiving" an entry

假设我有 machines 的 table,其中一列称为 status。这可以是 activeinactivediscardeddiscarded 台机器不再有用,它仅用于交易目的。

假设现在我想要discard一台机器。由于这是一个条目更新,RESTfully,这将是对 /machines/:idPUT 请求。但是,由于这是一种非常特殊的更新,因此可能还会发生其他操作(例如,删除任何已分配的用户等等)。

所以这应该更像是 POST/machines/:id/discard

我认为最通用的方法是 POST 具有 { status: 'discarded' }/machines/:id/ 的机器对象。

不过,就我个人而言,我更喜欢 /machines/:id/discard 方法。它可能不完全符合规范,但它更清晰且更易于过滤。例如,某些用户可能被允许更新一台机器,但 "archive" 它不允许。

从严格的 REST 角度来看,您是否考虑过实施 PATCH?通过这种方式,您可以让它仅更新该状态字段,然后将其与更新其他所有必要的内容联系起来?

参考文献:

https://www.mnot.net/blog/2012/09/05/patch http://jasonsirota.com/rest-partial-updates-use-post-put-or-patch

我个人认为当资源 ID 未知或与正在进行的更新不相关时,应该使用 post。

这将使我使用的方法特别是因为您还有其他需要更新的状态类型

路径

/machines/id

邮件正文

{"status":"discarded"}