我在Rails应用程序中使用PUT请求。现在,浏览器实现了一个新的HTTP动词PATCH。所以,我想知道PATCH和PUT请求之间的主要区别是什么,以及我们什么时候应该使用其中一个或另一个。


当前回答

Put和Patch方法类似。但是在rails中有不同的方法 如果我们想要更新/替换整个记录,那么我们必须使用Put方法。 如果我们想要更新特定的记录使用补丁方法。

其他回答

Put和Patch方法类似。但是在rails中有不同的方法 如果我们想要更新/替换整个记录,那么我们必须使用Put方法。 如果我们想要更新特定的记录使用补丁方法。

把: 如果我想更新我的名字,那么我发送一个put请求:

{ "first": "Nazmul", "last": "hasan" } 

但是这里有一个使用put请求的问题:当我想发送put请求时,我必须发送所有两个参数,这是第一个和最后一个(而我只需要更新第一个),所以必须再次与put请求一起发送它们。

补丁: 另一方面,补丁请求说:只指定你需要更新的数据,它不会影响或改变其他数据。 所以不需要再次发送所有值。我只需要改名字吗?只需要在补丁请求中指定第一个。

在进行更新时,PUT over PATCH有一些限制。使用PUT要求我们指定所有属性,即使我们只想更改一个属性。 但是如果我们使用PATCH方法,我们可以只更新我们需要的字段,而不需要提及所有的字段。PATCH不允许修改数组中的值,也不允许删除属性或数组项。

我花了几个小时在谷歌上,在这里找到了答案

把= > 如果用户可以更新记录的全部或部分,则使用PUT(用户控制更新内容)

PUT /users/123/email
new.email@example.org

补丁= > 如果用户只能更新部分记录,比如一个电子邮件地址(应用程序控制可以更新的内容),则使用PATCH。

PATCH /users/123
[description of changes]

为什么补丁

PUT方法需要更多的带宽或处理全部资源而不是部分。因此,为了降低带宽,引入了PATCH。

PATCH说明

PATCH是一种不安全的方法,也不是幂等的,并且允许对其他资源进行全部和部分更新以及副作用。

PATCH是一种方法,它所包含的实体包含一组指令,描述如何修改当前驻留在原始服务器上的资源以产生新版本。

PATCH /users/123
[
  { "op": "replace", "path": "/email", "value": "new.email@example.org" }
]

这里有更多关于put和patch的信息

PUT和PATCH方法在本质上是相似的,但有一个关键的区别。

PUT -在PUT请求中,所包含的实体将被认为是驻留在服务器上的资源的修改版本,它将被这个修改的实体所取代。

PATCH -在PATCH请求中,封闭的实体包含一组指令,说明驻留在服务器上的实体将如何被修改以产生一个新的版本。