PUT 和 PATCH 请求的区别


HTTP 是一种应用程序层协议,用于在网络设备之间传输数据。在 HTTP 中,可以使用多种方法。这些方法按顺序表示 CRUD(创建、读取、更新、删除)操作。一些 HTTP 方法具有许多相同的特性。因此,在 HTTP 系统中实现这些类似的 HTTP 方法之前,我们应该仔细研究它们。例如,PUT 和 PATCH 方法的特性之间存在相似之处,可能会造成混淆。两者都用于更新特定位置的资源。以下是它们之间的一些区别。

什么是 PUT 请求?

PUT 是一种更新资源的技术,客户端发送更新整个资源的数据。客户端使用 PUT 方法在 HTTP 服务器上创建实体或资源。此设置过程本身可以采用两种形式之一

更新资源

  • 如果请求的实体尚不存在,服务器会创建它并向客户端返回成功代码 201。

  • 如果实体已经存在,服务器会更新实体并向客户端返回 200 或 204 的成功代码。此外,如果 PUT 请求遇到问题,服务器应该向客户端提供相应的错误代码,通常是 4xx 或 5xx。它用于完全设置实体的信息。

在 PUT 方法中,我们需要发送整个资源以及需要更新的参数。

示例

如果要更新一个人的电话号码和电子邮件,需要将所有参数以及电话号码和电子邮件一起发送才能更新资源。否则,整个资源将被电话号码和电子邮件替换。

语法

PUT /html file HTTP/1.1

示例

PUT/html file HTTP/1.1
Host: example.com
Content- type: text/html
Content- length: 20
<p> New File </p>

响应

如果目标资源当前没有表示,并且 PUT 请求成功创建了一个表示,则源服务器应向用户代理发送 201(已创建)响应。

HTTP/1.1 201 Created
Content-Location: /new.html

如果目标资源已经具有当前表示,并且该表示根据所包含表示的状态成功更改,则源服务器必须发送 200(确定)或 204(无内容)响应以指示请求成功。

HTTP/1.1 204 No Content
Content-Location: /existing.html

什么是 PATCH 请求?

PATCH 方法仅部分修改资源的元素。PATCH 方法以原子方式执行请求的修改。这意味着如果服务器无法容纳所有请求的修改,则不会修改目标实体。

在这种方法中,如果请求正确执行,服务器会向客户端发送成功代码 204。否则,服务器将返回错误代码。客户端需要更新的字段只会更新,其余字段保持不变。

语法

PATCH /file.txt HTTP/1.1

示例

PATCH /file.txt HTTP/1.1
Host: www.example.com
Content-Type: application/example
If-Match: "e0023aa4e"
Content-Length: 100

2xx 状态代码表示成功响应。

由于响应不包含有效负载正文,因此以下示例中使用 204 响应代码。200 代码响应中可能存在有效负载正文。

响应

HTTP/1.1 204 No Content
Content-Location: /file.txt
ETag: "e0023aa4f"

PUT 和 PATCH 请求的区别

下表重点介绍了 PUT 和 PATCH 请求的主要区别

PUT

PATCH

PUT 是一种更新资源的技术,客户端发送更新整个资源的数据

PATCH 是一种资源修改方法,客户端传输更新的部分数据,而不更改完整数据

HTTP 的 PUT 方法是幂等的。因此,您在多次重试请求后进行的每次请求转换都算作一个请求

HTTP 请求的 PATCH 方法是非幂等的。因此,如果您多次尝试请求,最终将获得多个资源,每个资源都有不同的 URI

使用 PUT 请求,客户端请求替换所包含的实体,该实体被视为保存在原始服务器上的资源的更改版本

PATCH 提供一组说明,指定如何部分修改存储在原始服务器上的资源以生成新版本

PUT 方法的带宽较高

PATCH 的带宽相对较小

结论

PUT 和 PATCH 都修改已存在的数据,但由于幂等性,它们以不同的方式进行。由于并非所有服务器都接受 PATCH,因此 PUT 比 PATCH 更常用。因为它们提供编辑记录的指令,并且是部分更新而不是像 PUT 请求那样完全替换记录,所以 PATCH 请求可能会导致意外结果。

更新于:2023年7月12日

847 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告