2017-12-27 565 views
-1

閱讀關於REST協議我已經看到GET調用不應該更新服務器/應該是冪等的,所以我想:如果我想要保存用戶搜索(由GET調用)呢?我的結論是,由於它是一個冪等操作(首先和N save在服務器上具有相同的效果),在這種情況下,GET調用可以修改服務器數據。REST保存GET歷史

我對不對?

感謝

回答

1

如果我想在用戶搜索(用GET調用製造)纔可以得救?

好的,馬上往前走。

我的結論是,由於它是一個冪等操作(第一個和N存儲在服務器上具有相同的效果),在這種情況下,GET調用可以修改服務器數據。

你的結論是好的,你的推理有點軟。

羅伊菲爾丁,writing in 2002

HTTP不會試圖要求GET的結果是安全的。它所要求的是要求操作的語義是安全的,並且因此它是實現的錯誤,而不是接口 或該接口的用戶,如果發生任何事情,結果導致 造成財產損失(貨幣,BTW,被認爲是該定義的 的財產)。

這裏的關鍵思想是語義區分:HTTP統一接口定義了GET是safe

請求方法被認爲是「安全的」,如果他們的語義定義基本上是隻讀的;即,由於將安全方法應用於目標資源,客戶端不請求並且不期望源服務器上的任何狀態改變。同樣,合理使用安全的方法預計不會對原始服務器造成任何傷害,財產損失或異常負擔。

服務器可以處理請求的任何方式,它喜歡的(包括,例如,記錄所有這些請求)。