哲學上,我有關於如何解決以下REST情景一些例子問題:更新的東西在REST
1)誰在簽署的用戶希望「收藏」某人的博客中。用戶ID是一個guid,博客發佈是一個guid。這應該是PUT,因爲用戶/博客存在,或者POST,因爲'收藏夾'表中沒有條目?
2)數據庫中的安全行由10多個屬性組成,但我只想更新實體的一部分(用戶失敗的登錄嘗試次數)。這個電話應該是什麼?在JSON中傳遞整個數據傳輸對象?或者只是添加一個新的API路線的具體行動來更新?即只有一個參數的PUT(登錄嘗試次數)並傳遞用戶的ID。
3)類似於#2,一個用戶類(由25多個屬性組成),但我只希望用戶更新類的特定部分,而不是整個事情。在哲學上我是否需要傳遞整個用戶對象?或者只更新一件事就行了。看起來我可能會變得瘋狂,並且會針對特定屬性進行大量特定調用,但現實情況是,我可能只會更新用戶的2-3個特定部分(以及在其他情況下明顯更新整個內容)。這裏更新數據庫中某個實體的特定部分的方法是什麼?
非常感謝
感謝您的及時響應。因此,如果業務需要調用它,那麼使用PUT更新資源的特定組件(例如用戶的一個屬性)是可行/常見的,而不是在沒有任何變化的情況下傳回整個資源,除了一件事情?此外,對於#1,用戶存在,該項目存在,但'收藏夾'表中的條目不存在。爲什麼不是POST?技術上來說,我還沒有表中最喜愛的行的ID。謝謝! – NullHypothesis
正確。除了指定要更改或獲得的名詞以及要更新的值(使用前者)之外,您絕不應發回任何內容。我錯過了。更新。一定要標記答案,如果這是你正在尋找。 –
感謝您的更新 - 在#2你的意思是隻傳遞我想改變的屬性?因此如果有10個屬性,1個變化,只在帶有ID的PUT請求中傳遞1?即/ put/secrecord/1050519889(意思是更新特定記錄並將JSON數據傳遞給我想要更改的行)? – NullHypothesis