我在Rails应用程序中使用PUT请求。现在,浏览器实现了一个新的HTTP动词PATCH。所以,我想知道PATCH和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基本上被认为是非幂等的。然而,根据执行的位置,可以使它成为幂等的。

其他回答

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

根据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的信息

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基本上被认为是非幂等的。然而,根据执行的位置,可以使它成为幂等的。

类比解释

我买了辆阿尔法罗密欧。它的引擎有缺陷(真令人惊讶)

有两种方法可以解决这个问题:

更换整辆车(放请求),或者 只需更换有缺陷的引擎(补丁请求)-即。“修补”汽车,而不是完全更换它。


最后我以相当大的损失把汽车卖回给经销商。不用为命名这个品牌而道歉。我买意大利垃圾活该。