我正在设计HTTP API,希望使其尽可能地具有RESTful风格。
有些动作的功能会散布在一些资源上,有时需要撤消。
我以为自己,这听起来像是命令模式,但是我如何将其建模为资源呢?
我将介绍一个名为XXAction的新资源,例如DepositAction,它将通过这样的方式创建
POST /card/{card-id}/account/{account-id}/Deposit
AmountToDeposit=100, different parameters...
这实际上将创建一个新的DepositAction并激活它的Do / Execute方法。在这种情况下,返回201 Created HTTP状态表示操作已成功执行。
之后,如果客户希望查看操作细节,则可以
GET /action/{action-id}
我猜应该阻止Update / PUT,因为此处不相关。
为了撤消操作,我想到了使用
DELETE /action/{action-id}
实际上将调用相关对象的Undo方法,并更改其状态。
假设我只对一次“撤消”感到满意,而无需重做。
这种方法可以吗?
有什么陷阱,不使用它的原因吗?
从客户的观点看是否明白?