是否可以在spring数据休息中嵌入HAL响应中主要资源关系的数据?
原因是,在某些情况下,客户知道她一次需要Child
资源以及School
和Pets
关系。
使用链接可以在n个请求中请求此信息,但理想情况下可以在1中执行。
注意:n级深度会很好(JSON-API支持这个)但是现在甚至1级深度就足够了。
根据HAL规范,这显然是可能的,甚至可以使用普通的春天 - hateoas(见this example)。
如果是这样,怎么办?例子非常受欢迎。
请注意,所有相关资源都应该是顶级资源,因此不要使用@RestResource(exported = false)
并将其作为提倡的by Oliver here内联。
答案 0 :(得分:2)
您可以定义一个内联关联数据的投影:
请参阅:
http://docs.spring.io/spring-data/rest/docs/current/reference/html/#projections-excerpts
<强> 8.3。摘录常用数据组合域对象时会出现REST服务的常见情况。例如,一个人 存储在一个表中,它们的相关地址存储在另一个表中。 默认情况下,Spring Data REST将提供此人的地址作为 客户端必须导航的URI。但如果这对消费者来说很常见 总是获取这个额外的数据,摘录投影可以去 提前并内联这一额外的数据,为您节省额外的GET
@Projection(name = "withAssociations", types = { MyEntity.class })
public interface WithAssocationsProjection{
//method names match the getter methods in the corresponding Entity
List<School> getSchools();
List<Pet> getPets();
//you can also in-line a subset of data or have a further level
//of data in-lined for the association by
//specifying a further projection as the Collection Type.
List<ChildProjection> getChildren();
}
然后,客户可以请求特定的数据视图,如:
http://localhost:9090/api/myEntities?projection=withAssociations
http://localhost:9090/api/myEntities/123?projection=withAssociations