使用 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 并调用仅请求必要部分数据的查询。
它也支持自定义更新。
我有很多相关资源与后端导出的存储库(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 并调用仅请求必要部分数据的查询。
它也支持自定义更新。