Spring Data Rest PUT vs PATCH LinkableResources

szx*_*nyc 8 spring spring-data spring-data-jpa spring-data-rest spring-hateoas

我正在使用Spring Data REST来公开我的实体及其关系.我在两个实体之间有一个OneToOne关系,我正在尝试更新/改变与PUT和PATCH的关系.

我注意到Spring Data REST只允许您更新链接资源 - JPA映射实体(OneToMany,ManyToOne等),它们也是AggregateRoots(有一个存储库) - 通过PATCH并被PUT忽略 .

这可以在LinkedAssociationSkippingAssociationHandler类中看到:

if (associationLinks.isLinkableAssociation(association)) {
  return;
}
Run Code Online (Sandbox Code Playgroud)

为什么是这样?这背后的原因是什么?

是因为设计要求我们将关联视为资源本身,如文档的这一部分所示?我可以通过带有Content-Type text/uri-list的PUT改变关系,但感觉不自然,需要额外的HTTP请求.