如何将业务操作映射到rest url



如何将业务操作正确映射到rest url ?

例如:

  • 为了获得订单,我在/customers/{id}/orders/{id}上使用GET
  • 要创建一个新订单,我在'/customers/{id}/orders
  • 上使用POST

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

GETPUT/customers/{id}/orders/{id}/revoke不含任何内容??

我将POST改为/customers/{id}/orders/{id}/revoke

根据RFC2616, POST被设计为涵盖一系列功能,而不仅仅是创建资源。此外,GET和PUT应该是幂等的,而POST则不需要。

对于这种业务操作,您需要确定要在服务器上针对POST实现的适当功能和响应。一般来说,您的选择是:
  • 对于异步操作,创建一个描述操作状态的临时资源,并返回指向该操作状态资源的201(已创建)或202响应(已接受)。

  • 对于同步操作,只需执行撤销订单所需的任何操作,然后返回204 (No Content)或205响应(Reset Content)。

参考HTTP状态码定义,查看哪个响应码更适合您的场景。

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

最新更新