使用 Spring Data REST 实现更新深度嵌套 JSON 结构的最佳方法是什么?

What's the best way to implement update deeply nested JSON structure with Spring Data REST?

我有很多相关资源与后端导出的存储库(Spring 数据 REST)。 我的客户端使用 GET 加载 "root" 资源,然后通过“_links”属性延迟加载相关资源。 然后客户端可以修改加载图中的一些资源。

我想实现服务,它将 json 处理所有延迟加载的资源,并立即通过版本检查(乐观)更新修改后的资源。

实现它的最佳方法是什么? 这种方法是不好的做法吗?

我不完全明白你的意思,但是如果你想在 SDR 中加载嵌套资源 'eagerly',你可以关闭相关 'nested' 存储库的导出(甚至完全删除它们).例如:

@Entity
public class Parent {
   //...
   @OneToMany(cascaded = ALL, orphanRemoval = true)
   private Set<Child> children;
}

@Entity
public class Child {
   //...
}

@RepositoryRestResource
public interface ParentRepo extends JpaRepository<Parent, Long> {}

@RepositoryRestResource(exported = false)
public interface ChildRepo extends JpaRepository<Child, Long> {}

您还可以将 cascade = ALL, orphanRemoval = true 参数添加到 OneToMany 注释。

那么你所有的子对象都将由父对象管理,常见的有效负载如下所示:

{
   "name": "parent1",
   "children": [
      {
         "name": "child1"
      },

      {
         "name": "child2"
      }
   ]
}

听起来是 graphql.com

的好去处

它允许在一个请求中获取您需要的所有数据。您可以定义 API 并调用仅请求必要部分数据的查询。

它也支持自定义更新。