HTTP协议中的PUT、POST和PATCH方法有什么区别?


当前回答

你可能会把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]

其他回答

你可能会把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]

这里是一个简单的描述:

POST总是用于创建资源(是否复制并不重要) PUT用于检查资源是否存在,然后更新,否则创建新的资源 PATCH总是用于更新资源

参考RFC: https://www.rfc-editor.org/rfc/rfc9110.html#name-method-definitions

POST -创建新对象 PUT -更新旧对象或创建新对象(如果不存在) 更新/修改旧对象。主要用于修改。

之前提到的RFC的解释很少,但如果你仔细阅读,你会注意到PUT和PATCH方法是在POST之后出现的,这是一种常见的创建原生HTML表单的老式方法。

因此,如果你试图支持所有的方法(如PATCH或DELETE),可以建议使用所有方法的最合适的方法是坚持CRUD模型:

Create - PUT 阅读-获取 更新-补丁 删除-删除

旧的HTML原生方式: 阅读-获取 创建/更新/删除- POST

程序员们好运!: -)

最简单的解释:

创建新的记录

PUT -如果记录存在,更新else,创建一个新记录

补丁-更新

GET - read

DELETE -删除

PUT和PATCH请求的主要区别:

假设我们有一个资源,其中包含一个人的姓和名。

如果我们想要改变名字,那么我们发送一个put请求Update

{"第一个":"迈克尔","最后一个":"安吉洛"}

在这里,虽然我们只改变了名字,但是对于PUT请求,我们必须在第一个和最后一个发送参数。 换句话说,必须再次发送所有值,即完整的有效负载。

然而,当我们发送PATCH请求时,我们只发送我们想要更新的数据。换句话说,我们只发送名字来更新,不需要发送姓氏。