浅析Patch和Put的区别

在写后台更新接口的时候,定义路由使用@PutMapping,这个注解,但是,后来又改成的@PatchMapping,所以就查了下两者的区别。

问题描述

原来在进行更新操作的时候,都是使用put方法来进行请求的,但是这次在写更新的时候,只需要更新一个字段,所以使用了patch方法,那么,patchput这两者有什么区别呢?

局部与整体

最基本的,patch是对put的一个补充。举个例子:

一个计量单位实体MeasurementUnit,他有nameweightmeasurementUnitCategory等多个字段,在这里,我们要只修改weight这个字段,这时应该如何选择呢?

通常,我们为了省事,就会直接将修改了weight的完整的MeasurementUnit对象直接传给后台。但是这种做法实际上并不明智,这会浪费大量的网络带宽。

但是patch呢,他会只将weight传到制定资源去,表示这是一个局部更新,后端只更新收到的字段。

幂等性

另一个方面的区别:put是幂等的,而patch是非幂等的。

这里有一个比较有意思的概念,叫做幂等性。什么是幂等性呢,就是在请求某一资源的时候,多次操作与一次操作对被操作的对象达到的效果是一样的。简单举个例子:

用上面的更新来举例子,将权重weight更新为1,这种操作应该是执行多次都是达到同一个效果。

另一个操作,将weight更新为+1,这种操作显然多次操作就和一次操作不同了。


友情链接:

https://segmentfault.com/q/1010000011686226

https://segmentfault.com/q/1010000005685904

坚持原创技术分享,您的支持将鼓励我继续创作!