如何将业务操作正确映射到其他网址?
例如:
GET
/customers/{id}/orders/{id}
POST
但是如何映射撤销订单。撤销会触发单个业务流程,不仅会更改某些字段(如状态)吗?
GET
或PUT
到/customers/{id}/orders/{id}/revoke
没有任何内容?
答案 0 :(得分:2)
我会POST
到/customers/{id}/orders/{id}/revoke
。
根据RFC2616,POST旨在涵盖一系列功能,而不仅仅是创建资源。此外,GET和PUT预计是幂等的,而POST不需要。
对于这种业务操作,您需要确定在服务器上针对POST实现的相应功能和响应。从广义上讲,您的选择是:
对于异步操作,创建一个描述操作状态的临时资源,并返回指向该操作状态资源的201(已创建)或202响应(已接受)。
对于同步操作,只需执行撤消订单所需的操作,然后返回204(无内容)或205响应(重置内容)。
请参阅HTTP status code definitions,了解哪种响应代码更适合您的方案。
(当然,这是假设您不能简单地删除订单而不破坏您的业务流程。)