2015-07-21 42 views
0

如何正确将商家行为映射到其他网址?如何将商业行为映射到其他网址

例如:

  • 要得到一个订单,我用GET/customers/{id}/orders/{id}
  • 要创建一个新的订单,我用POST上`/客户/ {ID} /订单

但是如何映射撤销订单。撤销触发个人业务流程,不仅改变一些领域(如状态)?

GETPUT/customers/{id}/orders/{id}/revoke没有任何内容?

+0

你可以使用简单的'DELETE /客户/ {ID} /命令/ {ID} '或'PUT/customers/{id}/orders/{id}'来更新状态 –

+1

您的业务流程[idempotent](https://en.wikipedia.org/wiki/Idempotence)?如果是,使用'PUT'。如果不是,请使用'POST'。如果资源在请求后仍然存在(大概处于“撤销”状态),请勿使用“DELETE”。 –

回答

2

我会POST/customers/{id}/orders/{id}/revoke

根据RFC2616,POST旨在涵盖一系列功能,而不仅仅是创建资源。此外,GET和PUT预计是幂等的,而POST不需要。

对于这种业务操作,您需要确定在服务器上针对POST实现的适当功能和响应。从广义上来说你的选择是:

  • 对于异步操作,创建一个描述的动作状态的临时资源,并返回一个201(创建)或202响应(接受)指向的行动状态的资源。

  • 对于同步操作,只需做任何需要的操作即可撤销订单,然后返回204(无内容)或205响应(重置内容)。

请参阅HTTP status code definitions以查看哪个响应代码更适合您的方案。

(这是所有假设,当然,你不能简单的删除命令不会破坏你的业务流程。)

相关问题