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


当前回答

下面是HTTP协议的POST、PUT和PATCH方法的区别。

POST

一个HTTP。POST方法总是在服务器上创建一个新资源。这是一个非幂等的请求,即如果用户点击相同的请求2次,如果没有约束,它将创建另一个新的资源。

http post方法类似于SQL中的INSERT查询,它总是在数据库中创建一个新记录。

示例:使用POST方法保存新用户、订单等,其中后端服务器决定新资源的资源id。

PUT

在HTTP。PUT方法,资源首先从URL中识别,如果它存在,则更新它,否则创建一个新资源。当目标资源存在时,它会用一个全新的主体覆盖该资源。这就是HTTP。PUT方法用于创建或更新资源。

http put方法类似于SQL中的MERGE查询,它根据给定的记录是否存在插入或更新记录。

PUT请求是幂等的,即两次命中相同的请求将更新现有的记录(没有创建新的记录)。在PUT方法中,资源id由客户端决定,并在请求url中提供。

示例:使用PUT方法更新现有用户或订单。

补丁

一个HTTP。PATCH方法用于对资源的部分修改,即增量更新。

http补丁方法类似于SQL中的UPDATE查询,它只设置或更新选定的列,而不是整行。

示例:您可以使用PATCH方法更新订单状态。

-火\用户40450236 /订单/补丁10234557

请求正文:{状态:'已交付'}

其他回答

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

把= > 如果用户可以更新记录的全部或部分,则使用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 over PATCH有一些限制。使用PUT要求我们指定所有属性,即使我们只想更改一个属性。 但是如果我们使用PATCH方法,我们可以只更新我们需要的字段,而不需要提及所有的字段。PATCH不允许修改数组中的值,也不允许删除属性或数组项。

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

Differences between PUT and PATCH The main difference between PUT and PATCH requests is witnessed in the way the server processes the enclosed entity to update the resource identified by the Request-URI. When making a PUT request, the enclosed entity is viewed as the modified version of the resource saved on the original server, and the client is requesting to replace it. However, with PATCH, the enclosed entity boasts a set of instructions that describe how a resource stored on the original server should be partially modified to create a new version.

第二个区别是当涉及到等幂的时候。HTTP PUT被称为幂等的,因为它总是在每次发出几个请求后产生相同的结果。另一方面,HTTP PATCH基本上被认为是非幂等的。然而,根据执行的位置,可以使它成为幂等的。

下面是HTTP协议的POST、PUT和PATCH方法的区别。

POST

一个HTTP。POST方法总是在服务器上创建一个新资源。这是一个非幂等的请求,即如果用户点击相同的请求2次,如果没有约束,它将创建另一个新的资源。

http post方法类似于SQL中的INSERT查询,它总是在数据库中创建一个新记录。

示例:使用POST方法保存新用户、订单等,其中后端服务器决定新资源的资源id。

PUT

在HTTP。PUT方法,资源首先从URL中识别,如果它存在,则更新它,否则创建一个新资源。当目标资源存在时,它会用一个全新的主体覆盖该资源。这就是HTTP。PUT方法用于创建或更新资源。

http put方法类似于SQL中的MERGE查询,它根据给定的记录是否存在插入或更新记录。

PUT请求是幂等的,即两次命中相同的请求将更新现有的记录(没有创建新的记录)。在PUT方法中,资源id由客户端决定,并在请求url中提供。

示例:使用PUT方法更新现有用户或订单。

补丁

一个HTTP。PATCH方法用于对资源的部分修改,即增量更新。

http补丁方法类似于SQL中的UPDATE查询,它只设置或更新选定的列,而不是整行。

示例:您可以使用PATCH方法更新订单状态。

-火\用户40450236 /订单/补丁10234557

请求正文:{状态:'已交付'}