patch
方法用來更新局部資源
假設有一個UserInfo,里面有userId, userName, userGender等10個字段。可編輯功能因為需求,在某個特別的頁面里只能修改userName。通常把一個包含了修改后userName的完整userInfo對象傳給后端,做完整更新,這種做法會浪費寬帶。於是patch
誕生,只傳一個userName
到指定資源去,表示該請求是一個局部更新,后端僅更新接收到的字段。
而put
雖然也是更新資源,但要求前端提供的一定是一個完整的資源對象,理論上說如果用了put
,但卻沒有提供完整的UserInfo
,那么缺了的那些字段應該被清空。
如果后端程序沒有按照標准對兩個方法做不同的處理,在程序里把方法名從put
改成patchm沒有任何影響。
PATCH 與 PUT 屬性上的一個重要區別還在於:PUT 是冪等的,而 PATCH 不是冪等(表示一個操作執行任意次對系統的影響跟一次是相同的)的。
POST 方法不是冪等的,若反復執行多次對應的每一次都會創建一個新資源。如果請求超時,則需要回答這一問題:資源是否已經在服務端創建了?能否再重試一次或檢查資源列表?而對於冪等方法不存在這一個問題,我們可以放心地多次請求。