HTTP协议中的PUT,POST和PATCH方法有什么区别?
答案 0 :(得分:173)
HTTP.POST
。 POST方法用于请求源服务器接受请求中包含的实体,作为请求行中Request-URI标识的资源的新下级。
HTTP.PUT
。 PUT方法请求将所包含的实体存储在提供的Request-URI下。如果Request-URI引用已经存在的资源,则封闭的实体应该被视为驻留在源服务器上的实体的修改版本。如果Request-URI未指向现有资源,并且该URI能够被请求用户代理定义为新资源,则源服务器可以使用该URI创建资源。
HTTP.PATCH
。 PATCH方法请求将请求实体中描述的一组更改应用于Request-URI标识的资源。这组更改以称为补丁文档的格式表示。
有关更多信息,请参阅以下提到的网址
答案 1 :(得分:142)
HTTP动词中的PUT,POST,GET,DELETE和PATCH之间的区别:
最常用的HTTP谓词POST,GET,PUT,DELETE类似于数据库中的CRUD(创建,读取,更新和删除)操作。我们在 capital 的情况下指定了这些HTTP谓词。所以,下面是它们之间的比较。
PATCH:提交对资源的部分修改。如果只需要为资源更新一个字段,则可能需要使用PATCH方法。
注意:强>
由于POST,PUT,DELETE修改内容,使用fiddler对下面的url进行的测试只是模仿了更新。它实际上并没有删除或修改。我们只需查看状态代码即可检查插入,更新,删除是否发生。
网址 http://jsonplaceholder.typicode.com/posts/
1) GET:
GET是最简单的HTTP请求方法;每次单击链接或在地址栏中键入URL时浏览器使用的浏览器。它指示服务器将URL标识的数据传输到客户端。由于GET请求,不应在服务器端修改数据。从这个意义上说,GET请求是只读的。
使用Fiddler或PostMan进行检查: 我们可以使用fiddler来检查响应。打开提琴手,然后选择“撰写”选项卡。 如下所示指定动词和URL,然后单击“执行”以检查响应。
动词: GET
网址: http://jsonplaceholder.typicode.com/posts/
回复:您将收到以下回复:
" userId":1," id":1," title":" sunt aut ...",&# 34;身体":" quia et suscipit ..."
在“happy”(或非错误)路径中,GET返回XML或JSON中的表示形式,以及200(HTTP)的HTTP响应代码。在错误的情况下,它通常返回404(未找到)或400(不良请求)。
2)POST:
POST动词主要用于创建新资源。特别是,它用于创建从属资源。也就是说,从属于其他一些(例如父)资源。
成功创建后,返回HTTP状态201,返回Location标头,其中包含指向具有201 HTTP状态的新创建资源的链接。
使用Fiddler或PostMan进行检查: 我们可以使用fiddler来检查响应。打开提琴手,然后选择“撰写”选项卡。 如下所示指定动词和URL,然后单击“执行”以检查响应。
动词: POST
网址: http://jsonplaceholder.typicode.com/posts/
请求正文:
数据:{ 标题:' foo', 身体:' bar', userId:1000, Id:1000 }
回复:您会收到响应代码为201。
如果我们要检查Id = 1000的插入记录,请将动词更改为Get并使用相同的URL并单击Execute。
如前所述,上面的url只允许读取(GET),我们无法真实地读取更新后的数据。
3)PUT:
PUT最常用于更新功能,使用包含新更新的原始资源表示的请求正文进入已知资源URI。
使用Fiddler或PostMan进行检查: 我们可以使用fiddler来检查响应。打开提琴手,然后选择“撰写”选项卡。 如下所示指定动词和URL,然后单击“执行”以检查响应。
动词: PUT
网址: http://jsonplaceholder.typicode.com/posts/1
请求正文:
数据:{ 标题:' foo', 身体:' bar', userId:1, Id:1 }
响应:成功更新后,它会从PUT返回200(如果没有返回正文中的任何内容,则返回204)。
4)删除:
DELETE很容易理解。它用于删除由URI标识的资源。
成功删除后,返回HTTP状态200(OK)以及响应正文,可能是已删除项目的表示(通常需要太多带宽),或者包装响应(请参阅下面的返回值)。要么是返回HTTP状态204(NO CONTENT)而没有响应正文。换句话说,建议的响应是204状态,没有正文,或JSEND样式的响应和HTTP状态200。
使用Fiddler或PostMan进行检查: 我们可以使用fiddler来检查响应。打开提琴手,然后选择“撰写”选项卡。 如下所示指定动词和URL,然后单击“执行”以检查响应。
动词:删除
网址: http://jsonplaceholder.typicode.com/posts/1
响应:成功删除后,它会返回HTTP状态200(确定)以及响应正文。
PUT和PATCH之间的示例
PUT
如果我必须更改我的名字,请发送更新的PUT请求:
{" first":" Nazmul"," last":" hasan" } 所以,这里为了更新名字,我们需要再次发送数据的所有参数。
<强> PATCH:强>
补丁请求说我们只发送需要修改的数据,而不修改或影响数据的其他部分。 例如:如果我们只需要更新名字,我们只传递名字。
请参阅以下链接以获取更多信息:
https://jsonplaceholder.typicode.com/
https://github.com/typicode/jsonplaceholder#how-to
答案 2 :(得分:33)
PUT =用提供的新表示替换ENTIRE RESOURCE
PATCH =使用提供的值替换部分源资源AND |或者更新您未提供的资源的其他部分(时间戳)和|或更新资源影响其他资源(关系)
答案 3 :(得分:7)
这样想吧...
POST-创建
放置-替换
补丁-更新
获取-阅读
删除-删除
答案 4 :(得分:4)
GET / PUT是幂等的 PATCH有时是幂等的
什么是幂等- 这意味着如果我们多次触发查询,它就不会影响查询结果。(相同的输出。假设一头母牛怀孕了,如果我们再次繁殖它,那么它就不能多次怀孕)
get
:-简单获取。从服务器获取数据并将其显示给用户
{
id:1
name:parth
email:x@x.com
}
post
:-在数据库中创建新资源。这意味着它将添加新数据。它不是幂等的。
put
:-创建新资源,否则添加到现有资源。 幂等,因为它每次都会更新相同的资源,并且输出将相同。 例如。 -初始数据
{
id:1
name:parth
email:x@x.com
}
{
id:1
email:ppp@ppp.com
}
patch
所以现在有补丁请求 PATCH有时是幂等的
id:1
name:parth
email:x@x.com
}
补丁名称:w
{
id:1
name:w
email:x@x.com
}
HTTP Method GET yes POST no PUT yes PATCH no* OPTIONS yes HEAD yes DELETE yes
资源: 幂等-What is Idempotency?
答案 5 :(得分:4)
PUT 和 PATCH 请求之间的主要区别:
假设我们有一个资源,可以保存一个人的名字和姓氏。
如果我们想更改名字,我们会发送更新请求
{ "first": "Michael", "last": "Angelo" }
在这里,尽管我们只是在更改名字,但是在PUT请求中,我们必须同时发送参数和最后一个参数。
换句话说,必须重新发送所有值,即完整的有效负载。
但是,当我们发送PATCH请求时,我们仅发送我们要更新的数据。换句话说,我们仅发送要更新的名字,而无需发送姓氏。
答案 6 :(得分:4)
最简单的解释:
发布-创建新记录
PUT-如果记录存在,则更新其他记录,创建一个新记录
补丁-更新
获取-阅读
删除-删除
答案 7 :(得分:2)
以下定义来自真实示例。
示例概述
对于每个客户数据,我们将存储一个标识符以查找该客户数据,并将该标识符发送回该客户以供参考。
POST
输入
补丁
注意:在 Put 方法中,如果找不到标识符,我们不会抛出异常。但是在 Patch 方法中,如果找不到标识符,则会引发异常。
如果您对以上内容有任何疑问,请告诉我。
答案 8 :(得分:1)
这是所有内容的简单说明:
答案 9 :(得分:0)
PUT和PATCH分别发送全部和部分数据以分别替换/更新之间的差异是很合逻辑的。但是,仅需注意以下几点