2015-12-13 77 views
3

我正在做一個寧靜的服務,我不確定我所做的是否是有效的HTTP。我知道如何使用下面的HTTP方法:GET,DELETE和POST,但是當支持PUT時,我不太確定。我知道PUT是冪等的,但如果我要使用過濾呢?HTTP PUT過濾仍然是冪等的嗎?

爲了清楚,如果你用我的服務,您可以:

GET /User

這將列表中的所有用戶。

GET /User/1

這將讓誰擁有1

POST /User

的ID,這將創造一個新的用戶的用戶。

PUT /User/2

這將創造爲2的ID的新用戶時,如果用戶已經存在,用戶將被更新。

我開始掙扎的時候是我想對PUT請求實現過濾。例如,我讓:

PUT /User?FirstName=Andrew&LastName=Schools

這將更新具有安德魯的名字和學校的名字資源。此外,你也可以這樣做:

PUT /User?status=1

將更新誰擁有的1來自請求的主體內容的狀態的任何用戶。

我的問題是,因爲我在PUT上啓用過濾,這仍然是冪等的嗎?我最初的想法不是,因爲第一次使用上面的過濾器時,這可能會改變同一個過濾器在隨後的PUT中發現的東西,因此它不是冪等的。如果上面的語句確實是TRUE,那麼這個功能在POST中會更好嗎?

回答

0

我沒有看到問題。相關的是資源的最終狀態。如果您將PUT應用兩次,並且在第二次請求時過濾器標識的資源較少或不需要,它是否會更改您想要修改的資源的狀態?

+0

是的,過濾器找到的資源被正確替換。所以如果我說過濾器與冪等無關,但是冪等性與每個用戶的更新方式都有關係,我會是正確的嗎?因此,如果用戶在前兩次被過濾器發現,然後在第三次未被發現,只要用戶在頭兩次被完全替換爲所述數據,這仍然被認爲是冪等的。 –

+0

是的。與此相關的是資源的最終狀態。 –

相關問題