如何将业务操作正确映射到rest url ?
例如:- 为了获得订单,我在
/customers/{id}/orders/{id}
上使用GET
- 要创建一个新订单,我在'/customers/{id}/orders 上使用
POST
但是如何映射撤销命令。撤销会触发单个业务流程,而不只是更改某些字段(如状态)?
GET
或PUT
到/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状态码定义,查看哪个响应码更适合您的场景。
(当然,这都是假设您不能在不破坏业务流程的情况下简单地删除订单。)