檢索有一段時間我是(錯誤地)認爲一個RESTful API只是暴露CRUD操作持續了Web應用程序的實體。當你在「現實世界」中編寫代碼時,你很快就會發現這還不夠。例如,銀行賬戶轉賬不一定是持續的實體。這可能是一個短暫的資源,你POST
到/transfers/
和有效載荷您指定的細節:應該如何瞬態資源以RESTful API
{"accountToCredit":1234, "accountToDebit":5678, "amount":10}
使用POST
這裏是有道理的,因爲它改變了服務器上的狀態($從一個賬戶10點移動到另一個每次這發生了POST
)。
應在不影響服務器的情況下會發生什麼?簡單的第一個答案是使用GET
。例如,您想要獲得低於100美元的儲蓄和支票帳戶列表。然後你會打電話給GET
到/accounts/searchResults?minBalance=0&maxBalance=100
。如果您的搜索參數需要使用不符合GET
請求最大長度的複雜對象,會發生什麼情況。
我首先想到的是使用POST
,但經過考慮之後一些更多的,應該可能是一個PUT
,因爲它不改變服務器的狀態,但是從我的(有限的)理解我總是雖然的PUT
爲更新資源和POST
創建資源(如創建此搜索結果)。那麼在這種情況下應該使用哪種?
我發現下面的鏈接,其提供了一些信息,但它不是很清楚,我應該怎樣在不同的情況下使用:
Transient REST Representations
How to design RESTful search/filtering?