什么时候是使用 HTTP 方法 PATCH 而不是 PUT 的最佳时机?

When is the optimal time to use the HTTP method PATCH instead of PUT?

尽管 PUTPATCH 用于更新资源的相同目的。但是我什么时候应该使用 PATCH 而不是 PUT?反之亦然。

当您发送的正文是要创建或覆盖的完整资源时使用 PUT — 也就是说,基本上与您 GET 在同一地址返回的内容相同。如果正文表示如何更改现有资源,请使用PATCH

when should i use PATCH instead of PUT?

当补丁文档比完整表示小得多并且您不关心幂等消息传递的好处时使用补丁。

PATCH 和 PUT 都具有远程创作语义,也就是说请求的意思是“请使目标资源的副本与我的副本匹配”。对于 PUT,我们将发送新表示的完整副本;在 PATCH 的情况下,我们正在发送一个补丁文件——也就是说我们所做的更改的表示。

PUT 是 idempotent;通用组件知道,如果服务器碰巧收到消息的两个副本,则不会发生损坏。这意味着,除其他事项外,如果我们在不可靠的传输上发送消息,客户端可以通过重新发送请求来对丢失的响应作出反应 而无需任何额外的权限 .

PATCH 不是幂等的;它所做的保证与 POST 的保证非常相似。因此,如果响应丢失,通用组件将不知道重试请求是安全的。

(有一些补丁文档格式支持幂等处理——JSON Patch 就是一个例子。但它通常 不是真的,而且这个知识是'无法以通用客户可以发现的“易于标准化的形式”获得。)