多個命令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