我正在做一個寧靜的服務,我不確定我所做的是否是有效的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中會更好嗎?
是的,過濾器找到的資源被正確替換。所以如果我說過濾器與冪等無關,但是冪等性與每個用戶的更新方式都有關係,我會是正確的嗎?因此,如果用戶在前兩次被過濾器發現,然後在第三次未被發現,只要用戶在頭兩次被完全替換爲所述數據,這仍然被認爲是冪等的。 –
是的。與此相關的是資源的最終狀態。 –