我在Rails应用程序中使用PUT请求。现在,浏览器实现了一个新的HTTP动词PATCH。所以,我想知道PATCH和PUT请求之间的主要区别是什么,以及我们什么时候应该使用其中一个或另一个。
当前回答
把: 如果我想更新我的名字,那么我发送一个put请求:
{ "first": "Nazmul", "last": "hasan" }
但是这里有一个使用put请求的问题:当我想发送put请求时,我必须发送所有两个参数,这是第一个和最后一个(而我只需要更新第一个),所以必须再次与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/
下面是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方法在本质上是相似的,但有一个关键的区别。
PUT -在PUT请求中,所包含的实体将被认为是驻留在服务器上的资源的修改版本,它将被这个修改的实体所取代。
PATCH -在PATCH请求中,封闭的实体包含一组指令,说明驻留在服务器上的实体将如何被修改以产生一个新的版本。
Put和Patch方法类似。但是在rails中有不同的方法 如果我们想要更新/替换整个记录,那么我们必须使用Put方法。 如果我们想要更新特定的记录使用补丁方法。
把: 如果我想更新我的名字,那么我发送一个put请求:
{ "first": "Nazmul", "last": "hasan" }
但是这里有一个使用put请求的问题:当我想发送put请求时,我必须发送所有两个参数,这是第一个和最后一个(而我只需要更新第一个),所以必须再次与put请求一起发送它们。
补丁: 另一方面,补丁请求说:只指定你需要更新的数据,它不会影响或改变其他数据。 所以不需要再次发送所有值。我只需要改名字吗?只需要在补丁请求中指定第一个。
推荐文章
- 什么是“升级-不安全-请求”HTTP报头?
- HTTP 301和308状态码有什么区别?
- 什么HTTP状态码应该用于错误的输入
- 编排microservices
- 如何使HTTP请求在PHP和不等待响应
- PATCH和PUT请求的主要区别是什么?
- 我可以把我所有的http://链接都改成//吗?
- URL为AJAX请求编码一个jQuery字符串
- 我能把已经分裂的大块头和少不要脸的人分开吗?
- 编译System.Net.HttpClient的查询字符串
- 摘要认证和基本认证的区别是什么?
- Axios -删除请求与请求体和头?
- 如何在http获取请求设置报头?
- 如何使用Ruby on Rails进行HTTP请求?
- REST API最佳实践:查询字符串中的参数vs请求体中的参数