一、什么是HTPP Patch
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
而patch其實就是對新增五種請求方式中的put的補充。用來對已知資源進行局部更新。
補充一下,PATCH 與 PUT 屬性上的一個重要區別還在於:PUT 是冪等的,而 PATCH 不是冪等的。
冪等是一個數學和計算機學概念,在計算機范疇內表示一個操作執行任意次對系統的影響跟一次是相同
二、打個比喻
假設我們有一個UserInfo,里面有userId, userName, userGender等10個字段。可你的編輯功能因為需求,在某個特別的頁面里只能修改userName,這時候的更新怎么做?
人們通常(為徒省事)把一個包含了修改后userName的完整userInfo對象傳給后端,做完整更新。但仔細想想,這種做法感覺有點二,而且真心浪費帶寬(純技術上講,你不關心帶寬那是你土豪)。
於是patch誕生,只傳一個userName到指定資源去,表示該請求是一個局部更新,后端僅更新接收到的字段。
人們通常(為徒省事)把一個包含了修改后userName的完整userInfo對象傳給后端,做完整更新。但仔細想想,這種做法感覺有點二,而且真心浪費帶寬(純技術上講,你不關心帶寬那是你土豪)。
於是patch誕生,只傳一個userName到指定資源去,表示該請求是一個局部更新,后端僅更新接收到的字段。
而put雖然也是更新資源,但要求前端提供的一定是一個完整的資源對象,理論上說,如果你用了put,但卻沒有提供完整的UserInfo,那么缺了的那些字段應該被清空。
三、使用方法
1、在之前開發的項目中用戶控制器中添加一個patch方法,用來更新用戶信息

2、請求時如果只更新用戶公司名,請求格式如下:
3、如要更新集合內用如下的方法
4、請求更新集合的數據時value用數組就行,如下: