RESTful "archiving" 个条目的实现
RESTful implementation for "archiving" an entry
假设我有 machines
的 table,其中一列称为 status
。这可以是 active
、inactive
或 discarded
。 discarded
台机器不再有用,它仅用于交易目的。
假设现在我想要discard
一台机器。由于这是一个条目更新,RESTfully,这将是对 /machines/:id
的 PUT
请求。但是,由于这是一种非常特殊的更新,因此可能还会发生其他操作(例如,删除任何已分配的用户等等)。
所以这应该更像是 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"}
假设我有 machines
的 table,其中一列称为 status
。这可以是 active
、inactive
或 discarded
。 discarded
台机器不再有用,它仅用于交易目的。
假设现在我想要discard
一台机器。由于这是一个条目更新,RESTfully,这将是对 /machines/:id
的 PUT
请求。但是,由于这是一种非常特殊的更新,因此可能还会发生其他操作(例如,删除任何已分配的用户等等)。
所以这应该更像是 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"}