@PatchMapping 的用例

Dev*_*han 4 java rest spring hibernate http

有一个名为PATCH的RequestMethod

要使用此方法,我们可以为休息端点定义@PatchMapping 。根据我的理解,这听起来像是部分更新数据库对象。

通常,我们使用 POST 或 PUT 调用来执行保存或更新。那么,仍然不清楚 PatchMapping 的确切用例是什么,为什么我不能只使用 PUT 而不是 PATCH?

Voi*_*son 5

仍然不清楚 PatchMapping 的确切用例是什么,为什么我不能只使用 PUT 而不是 PATCH?

PUT(由RFC 7231定义)和 PATCH(由RFC 5789定义)是两种不同的方法,用于类似的目的:请求服务器使其资源的表示与客户端上的表示相匹配。

想象一下,如果您愿意,尝试更新服务器提供的网页。客户端首先获取服务器表示的最新副本:

GET /foo
Run Code Online (Sandbox Code Playgroud)

然后,使用客户最喜欢的本地 HTML 编辑器对此私有副本进行更改。当客户端完成更改后,我们希望将这些更改发送回服务器以供使用。

在 HTTP 中执行此操作的直接方法是将整个更新后的表示发送回服务器:

PUT /foo

<html>....</html>
Run Code Online (Sandbox Code Playgroud)

当表示非常大(与 HTTP 标头相比),并且编辑非常小(与文档相比)时,PUT 就成为一种有点“昂贵”的方式来实现应该是小事情。

为此,我们还可能支持 PATCH,这样我们就不必发送整个文档,而只需发送我们所做更改的表示:补丁文档。

当服务器收到我们的补丁时,它会加载自己的文档副本,应用补丁文档描述的更改,并保存结果。

因此:总体用例是相同的:远程创作。您将资源的表示形式加载到 HTTP 感知文档编辑器中,进行一些更改,然后单击“保存”,您的编辑器就知道如何将您的编辑内容传送回服务器。