如何将业务操作映射到其他网址

时间:2015-07-21 17:02:31

标签: rest

如何将业务操作正确映射到其他网址?

例如:

  • 要获得订单,我在GET
  • 上使用/customers/{id}/orders/{id}
  • 要创建新订单,我在`/ customers / {id} / orders
  • 上使用POST

但是如何映射撤销订单。撤销会触发单个业务流程,不仅会更改某些字段(如状态)吗?

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

  • 对于同步操作,只需执行撤消订单所需的操作,然后返回204(无内容)或205响应(重置内容)。

请参阅HTTP status code definitions,了解哪种响应代码更适合您的方案。

(当然,这是假设您不能简单地删除订单而不破坏您的业务流程。)