Spring Data Rest PUT v.s PATCH LinkableResources
我正在使用 Spring Data REST 来公开我的实体及其关系。我在两个实体之间有一个 OneToOne 关系,我正在尝试更新/更改与 PUT 和 PATCH 的关系。
我注意到 Spring Data REST 只允许你更新链接的资源——JPA 映射的实体(OneToMany、ManyToOne 等),它们也是 AggregateRoots(有一个存储库)——通过 PATCH 并被 PUT 忽略。 这可以在 LinkedAssociationSkippingAssociationHandler 类中看到:1
2
3if (associationLinks.isLinkableAssociation(association)) {
return;
}
这是为什么?这背后的原因是什么?
是否因为设计希望我们将关联视为资源本身,如文档的这一部分所示?我可以通过带有 Content-Type text/uri-list 的 PUT 更改关系,但感觉不自然并且需要额外的 HTTP 请求。
从 Spring 数据 REST 2.5.9.RELEASE 开始,关联不会在 PUT 请求上更新,而只会使用 PATCH 更新。
2.5.9.RELEASE 版本的变化 (2017-04-19)
DATAREST-1030 - PATCH 请求没有正确处理关联的链接。
关于此的其他链接:
DATAREST-1061:带有应用程序/json 媒体类型负载的 PUT 请求无法通过 URI
更新关联 @OneToOne
领域驱动设计和Spring