总结
区别 | Post | put | Patch |
---|---|---|---|
等幂性 | 非等幂 | 等幂 | |
用处 | 创建 | 更新资源,如果资源不存在就创建资源 | 只更新资源的一部分 |
详细说明
POST是非等幂的,多次调用会产生不同的结果。比如:创建一个用户,由于网络原因或是其他原因多创建了几次,那么将会有多个用户被创建。
PUT 多次调用还是会创建的结果是一样的,只会创建一个用户,所以PUT是等幂的。
假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段。但我我们的编辑功能因为需求,在某个特别的页面里只能修改userName,这时候需要更新userName。
如果使用PATCH来局部更新资源,只会传一个userName到指定资源去,表示该请求是一个局部更新,后端仅更新接收到的字段,所以PATCH一般是用来局部更新资源的,
如果使用PUT来局部更新资源,则会把一个包含了修改后userName的完整userInfo对象传给后端,做完整更新。理论上说,如果使用了PUT,但却没有提供完整的UserInfo,那么缺了的那些字段应该被清空。
**PUT **会有一个create操作,如果加入更新的id不存在,会进行创建。
**PATCH **则不会创建。
here is a simple description of all
- POST is always for creating a resource ( does not matter if it was duplicated )
- PUT is for checking if resource is exists then update , else create new resource.
- PATCH is always for update a resource.