多个命令REST API我有一个关于REST API设计的问题。下面是一个简单的(也许太简单了)API:每资源
GET /ecommerce/order/123
POST /ecommerce/order (create a new order)
PUT /ecommerce/order/123 (update an existing order)
DELETE /ecommerce/order/123 (cancel order)
但被取消,如果我想客户输入订单的理由是什么?我需要发送发布数据到API,但是这不适用于DELETE。为了迎合这个,我将不得不将DELETE更改为PUT。然后我会发布两个不同的资源来更新和取消。
另一种解决办法是改变API:
GET /ecommerce/order/123
POST /ecommerce/order/create (create a new order)
PUT /ecommerce/order/update/123 (update an existing order)
DELETE /ecommerce/order/cancel/123 (cancel order)
我不知道这是最好的选择。
有一个更一般的问题是如何REST API的手柄单一资源的多个命令。
任何投入,将不胜感激!我很快就会在实践中阅读REST,但是这个问题对我来说很小。
我喜欢这答案。资源和域名实体不是一一对应的。 – 2011-06-13 21:09:30
我不太喜欢CancelledOrder的名字,更好的资源名称是OrderCancellation,或者换句话说,将操作公开为资源。这在可逆操作的情况下也很好,因为您可以在“操作”上使用删除。 – Maxem 2011-06-15 16:11:37
此外,当这不太合适,我喜欢这个评论提到了同样的问题:http://programmers.stackexchange.com/a/270421/211215 – Almund 2016-01-15 09:07:48