Spring Data Rest PUT 与 PATCH LinkableResources

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
3
if (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