2 回答

TA贡献1798条经验 获得超3个赞
有没有一种更简洁的方法来处理包括一对多关系、多对多关系等的部分更新?
很难说——这取决于工作的哪一部分给你带来了麻烦。
PATCH
,并且类似地PUT
,表达文档编辑语义——在这两种情况下,我们都要求服务器使其对某些资源的表示与客户端的表示相匹配。
我GET /foo
和你依次发给我一个 1GB 的 json 文档。我将该文档加载到我的 json 编辑器中,并修复一两个拼写错误。因为变化很小,我可能想向您发送一个 PATCH 请求,而不是发回 1GB 的 json。这意味着我将在您和我理解的某种媒体类型中创建我的编辑的表示,并将该表示发送给您。
application/json-patch+json可能是一个很好的起点。
使用标准的好处在于,很多工作已经为您完成。但是您可以设计自己的补丁文档模式,如果您愿意的话,并发布它,任何理解您的模式的客户都可以与您进行互操作。
请注意,这一切都发生在“通过网络传输文档”的领域。这里没有任何事情暗示客户知道存在对象模型、关系数据库表或任何类似的实现细节。这纯粹是服务器要解决的问题。
当然,现在问题的第二部分是:我在这,一台带有补丁文档的服务器和我的关系数据库中可能需要更新的 110 个表。这是怎么发生的?正如约翰指出的那样,这是必须实施的工作。在 Java/Spring/Hibernate 类型的世界中,一个可能的答案是您可以通过 ORM 加载当前服务器端状态,使用补丁引导对本地内存数据结构的编辑,然后让您的 ORM 找出什么需要运行语句。

TA贡献1829条经验 获得超9个赞
我以前用两种方式解决过这个问题。
就像你提到的。拥有处理逻辑和路由到适当的 crud 存储库方法的委托
使用 PATCH HTTP 方法。请注意,这只是语义上的。实际逻辑仍然需要像任何其他 HTTP 方法一样由您完成。
此处示例:https ://github.com/jersey/jersey/tree/master/examples/http-patch
添加回答
举报