我在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

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

其他回答

根据HTTP术语,PUT请求就像一个数据库更新语句。 PUT -用于修改现有资源(先前post)。另一方面,PATCH请求用于更新现有资源的某些部分。

例如:

客户详细信息:

// This is just a example.

firstName = "James";
lastName = "Anderson";
email = "email@domain.com";
phoneNumber = "+92 1234567890";
//..

当我们想要更新到整个记录?我们必须使用Http PUT动词。

如:

// Customer Details Updated.

firstName = "James++++";
lastName = "Anderson++++";
email = "email@Updated.com";
phoneNumber = "+92 0987654321";
//..

另一方面,如果我们只想更新记录的一部分而不是整个记录,那么使用Http PATCH谓词。 如:

   // Only Customer firstName and lastName is Updated.

    firstName = "Updated FirstName";
    lastName = "Updated LastName";
   //..

Put和post:

当使用PUT请求时,我们必须发送所有参数,如firstName, lastName, email, phoneNumber,其中在补丁请求中只发送我们想要更新的参数,它不会影响或改变其他数据。

详情请访问:https://fullstack-developer.academy/restful-api-design-post-vs-put-vs-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 over PATCH有一些限制。使用PUT要求我们指定所有属性,即使我们只想更改一个属性。 但是如果我们使用PATCH方法,我们可以只更新我们需要的字段,而不需要提及所有的字段。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

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

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