HTTP协议中的PUT、POST和PATCH方法有什么区别?
当前回答
这样想吧……
POST - create
PUT -替换
补丁-更新
GET - read
DELETE -删除
其他回答
HTTP中PUT、POST、GET、DELETE、PATCH的区别:
最常用的HTTP动词POST, GET, PUT, DELETE类似于数据库中的CRUD(创建,读取,更新和删除)操作。我们用大写字母指定这些HTTP动词。所以,下面是他们之间的比较。
Create - POST 阅读-获取 更新- PUT 删除-删除
PATCH:向资源提交部分修改。如果您只需要更新资源的一个字段,您可能需要使用PATCH方法。
注意: 由于POST、PUT、DELETE会修改内容,因此使用Fiddler对下面url进行的测试只是模拟更新。它实际上没有删除或修改。我们可以只查看状态码,以检查是否发生了插入、更新和删除。
URL: http://jsonplaceholder.typicode.com/posts/
得到:
GET是最简单的HTTP请求方法;每次你点击链接或在地址栏中输入URL时,浏览器都会使用它。它指示服务器将URL标识的数据传输到客户端。永远不要因为GET请求而在服务器端修改数据。从这个意义上说,GET请求是只读的。
向小提琴手或邮差查询: 我们可以使用Fiddler来检查响应。打开Fiddler并选择Compose选项卡。 如下所示指定动词和url,然后单击Execute检查响应。
动词:
url: http://jsonplaceholder.typicode.com/posts/
响应:您将得到如下响应:
"userId": 1, "id": 1, "title": "sunt aut...", "body": "quia et suscipit..."
在“愉快”(或无错误)路径中,GET返回一个XML或JSON表示形式和一个HTTP响应代码200 (OK)。在错误情况下,它通常返回404 (NOT FOUND)或400 (BAD REQUEST)。
2):
POST动词主要用于创建新资源。特别是,它用于创建下级资源。也就是说,从属于其他资源(例如父资源)。
在成功创建时,返回HTTP状态201,返回一个Location头,其中包含指向新创建的HTTP状态201的资源的链接。
向小提琴手或邮差查询: 我们可以使用Fiddler来检查响应。打开Fiddler并选择Compose选项卡。 如下所示指定动词和url,然后单击Execute检查响应。
动词:文章
url: http://jsonplaceholder.typicode.com/posts/
请求主体:
data: {
title: 'foo',
body: 'bar',
userId: 1000,
Id : 1000
}
响应:您将收到响应代码201。
如果我们想检查Id = 1000的插入记录,将动词改为Get,并使用相同的url,然后单击Execute。
如前所述,上面的url只允许读取(GET),我们不能读取实际更新的数据。
3)说:
PUT最常用于更新功能,放置到一个已知资源URI,其中请求体包含原始资源的最新更新表示。
向小提琴手或邮差查询: 我们可以使用Fiddler来检查响应。打开Fiddler并选择Compose选项卡。 如下所示指定动词和url,然后单击Execute检查响应。
动词:
url: http://jsonplaceholder.typicode.com/posts/1
请求主体:
data: {
title: 'foo',
body: 'bar',
userId: 1,
Id : 1
}
响应:在成功更新时,它从PUT返回状态200(如果没有返回任何正文内容,则返回状态204)。
4)删除:
DELETE很容易理解。它用于删除由URI标识的资源。
在成功删除时,返回HTTP状态200 (OK)以及一个响应体,可能是已删除项的表示(通常需要太多带宽),或者是一个封装的响应(请参阅下面的返回值)。或者返回HTTP状态204 (NO CONTENT),没有响应体。换句话说,不带正文的204状态或jsend样式的响应和HTTP状态200是推荐的响应。
向小提琴手或邮差查询: 我们可以使用Fiddler来检查响应。打开Fiddler并选择Compose选项卡。 如下所示指定动词和url,然后单击Execute检查响应。
动词:删除
url: http://jsonplaceholder.typicode.com/posts/1
响应:在成功删除时,它返回HTTP状态200 (OK)以及响应体。
PUT和PATCH之间的示例
PUT
如果我不得不改变我的名字,然后发送PUT请求更新:
{ "first": "Nazmul", "last": "hasan" }
这里,为了更新第一个名字,我们需要再次发送数据的所有参数。
补丁:
补丁请求说我们只发送我们需要修改的数据,而不修改或影响其他部分的数据。 例如:如果我们只需要更新名字,我们就只传递名字。
详情请参阅以下连结:
https://jsonplaceholder.typicode.com/ https://github.com/typicode/jsonplaceholder#how-to PATCH和PUT请求的主要区别是什么? http://www.restapitutorial.com/lessons/httpmethods.html
PUT =用所提供的新表示替换整个RESOURCE
PATCH =用所提供的值替换源资源的部分和|或资源的其他部分被更新,你没有提供(时间戳)和|或更新资源影响其他资源(关系)
https://laracasts.com/discuss/channels/general-discussion/whats-the-differences-between-put-and-patch?page=1
请求类型
create - POST read - GET create或update - PUT delete -删除 update - PATCH
GET/PUT是等幂的 PATCH有时是等幂的
什么是幂等的 这意味着如果我们多次触发查询,它不应该影响查询的结果。(相同的输出。假设一头牛怀孕了,如果我们再次繁殖它,那么它就不能怀孕多次)
得到:
简单的会。从服务器获取数据并显示给用户
{
id:1
name:parth
email:x@x.com
}
职位:
在数据库中创建新资源。这意味着它会添加新的数据。它不是等幂的。
将:-
创建新资源,否则添加到现有资源。 幂等的,因为它每次都会更新相同的资源,输出也会相同。 前女友。 -初始数据
{
id:1
name:parth
email:x@x.com
}
执行put-localhost / 1 把电子邮件:ppp@ppp.com
{
id:1
email:ppp@ppp.com
}
补丁
现在是补丁请求 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
资源: 幂等性——什么是幂等性?
你可能会把restful HTTP方法理解为javascript中对数组的相应操作(索引偏移量为1)。
请看下面的例子:
Method | Url | Meaning |
---|---|---|
GET | /users | return users array |
GET | /users/1 | return users[1] object |
POST | /users | users.push(body) ; return last id or index |
PUT | /users | replace users array |
PUT | /users/1 | users[1] = body |
PATCH | /users/1 | users[1] = {...users[1], ...body } |
DELETE | /users/1 | delete users[1] |
最简单的解释:
创建新的记录
PUT -如果记录存在,更新else,创建一个新记录
补丁-更新
GET - read
DELETE -删除
推荐文章
- 如何使HTTP请求在PHP和不等待响应
- PATCH和PUT请求的主要区别是什么?
- 我可以把我所有的http://链接都改成//吗?
- URL为AJAX请求编码一个jQuery字符串
- 编译System.Net.HttpClient的查询字符串
- 摘要认证和基本认证的区别是什么?
- Axios -删除请求与请求体和头?
- 如何在http获取请求设置报头?
- 如何使用Ruby on Rails进行HTTP请求?
- REST API最佳实践:查询字符串中的参数vs请求体中的参数
- Express.js中的res.send和res.json的区别
- 如何评估http响应代码从bash/shell脚本?
- 如何从查询字符串读取值与ASP。网络核心?
- 302和307重定向有什么区别?
- 使用POST而不是GET创建链接