java - @PatchMapping 的用例
问题描述
有一个名为PATCH的RequestMethod。
要使用此方法,我们可以为休息端点定义@PatchMapping 。据我了解,这听起来像是部分更新了 DB 对象。
通常,我们使用 POST 或 PUT 调用来执行保存或更新。所以,仍然不清楚 PatchMapping 的确切用例是什么,为什么我不能只使用 PUT 而不是 PATCH?
解决方案
仍然不清楚 PatchMapping 的确切用例是什么,为什么我不能只使用 PUT 而不是 PATCH?
PUT(由RFC 7231定义)和 PATCH(由RFC 5789定义)是用于类似目的的两种不同方法:请求服务器使其资源表示与客户端上的表示匹配。
想象一下,如果您愿意,尝试更新服务器提供的网页。客户端首先获取服务器表示的最新副本:
GET /foo
然后,使用客户最喜欢的本地 HTML 编辑器,对这个私有副本进行更改。当客户端完成更改后,我们希望将这些更改发送回服务器以供使用。
在 HTTP 中执行此操作的直接方法是简单地将整个更新的表示发送回服务器:
PUT /foo
<html>....</html>
当表示非常大(与 HTTP 标头相比)并且编辑非常小(与文档相比)时,PUT 就变成了一种有点“昂贵”的方式来实现应该是一件小事。
为此,我们可能还支持 PATCH,这样我们就不需要发送整个文档,而是发送我们所做更改的表示:一个补丁文档。
当服务器收到我们的补丁时,它会加载它自己的文档副本,应用补丁文档描述的更改,并保存结果。
因此:总体用例是相同的:远程创作。您将资源的表示加载到支持 HTTP 的文档编辑器中,进行一些更改,然后点击“保存”,您的编辑器就知道如何将您的编辑反馈回服务器。
推荐阅读
- c++ - 使用 #ifdef 时在构建的链接阶段出现意外行为
- spring - 使用可选的 uri 模板变量在 Spring MVC 中构建 URI
- javascript - 使用 Javascript 在我的网站上显示从 url 到 div 的返回值
- python - 可以添加到 mfcc 功能中的说话人识别功能/为了改进说话人识别神经网络我可以做的事情
- android - 如何通过数据绑定将数据传输到另一个活动?
- java - 如何计算java程序无法读取的单元格数
- swiper - 两个导航中的两个滑块
- typescript - 打字稿无法编译
- java - Hibernate延迟加载的理论问题
- javascript - setState 没有更新简单 React 示例中的值