当前位置: 首页 > 知识库问答 >
问题:

spring data rest:是否可以在单个响应中动态嵌入资源的关系?

柯良骏
2023-03-14

在spring data rest中,是否可以在HAL响应中嵌入主要资源关系的数据?

原因是,在某些情况下,客户端知道她将需要孩子资源以及学校宠物关系。

使用链接,可以在n个请求中请求此信息,但理想情况下可以在1个请求中请求

注意:n级深度会很好(JSON-API支持这一点),但现在即使是1级深度也足够了。

根据HAL规范,这显然是可能的,甚至可以使用纯Springhateoas(参见本例)。

  • 在spring data rest中,这在任何情况下都是可能的吗
  • 如果没有大量的锅炉板代码和基本上重写SDR位,这是可能的吗

如果是,如何做?最好举个例子。

请注意,所有有问题的资源都应该是顶级资源,因此不要使用@RestResource(exported=false)并按照Oliver的建议将它们内联。

共有1个答案

通寂离
2023-03-14

您可以定义一个将关联数据内联的投影:

见:

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

 类似资料:
  • 我正在写入一个CSV文件,并使用来完成。我有一个bean,它是我的类,我也有一个资源属性,在这里我提供了用于写出项的文件名。 是否可以将日期和时间附加到文件名? 现在我告诉它写入一个名为report.csv的文件,而不是我希望它写入一个名为report-7-2-2014-16-03.csv的文件 以下是作者的XML配置

  • 问题内容: 我们正在使用加载属性信息。我们的属性文件已经变得非常庞大,我们正在考虑将主属性文件分成几个子模块。有可能实现这一目标吗? 让我知道? 问题答案: 首先,我想知道为什么您选择了。给出问题的表达方式后,您似乎不必关心本地化/国际化或捆绑文件继承。 有了它,它就变得异常容易,因为它实现了反过来又提供了一种合并另一张地图的方法。开球示例: 如果您真的坚持使用,则最好的选择是创建一个自定义,在该

  • 我正在使用Jasper生成PDF报告。在jrxml文件中,我可以读取单个属性文件作为一个资源包,但这里我需要读取2个属性文件来生成报告作为一个双语(两种语言标签,一种是英语标签,另一种是本地语言标签)报告。是否可以在JasperReport中使用多个属性文件。还是有其他办法可以做到这一点?

  • 嵌入资源 嵌入资源即内容嵌入,可以为工程师提供诸如图片base64嵌入到css、js里,前端模板编译到js文件中,将js、css、html拆分成几个文件最后合并到一起的能力。有了这项能力,可以有效的减少http请求数,提升工程的可维护性。 fis不建议用户使用内容嵌入能力作为组件化拆分的手段,因为声明依赖能力会更适合组件化开发。 在html中嵌入资源 在html中可以嵌入其他文件内容或者base6

  • 问题内容: 让我们考虑以下情况。有一个,有一个。子窗格将添加到父窗格。考虑到可以动态地添加和删除子窗格而没有任何限制和顺序的情况下,如何才能仅在可见子窗格的情况下使parentPane可见。当然childPane的可见状态也可以随时更改。是否可以创建动态Bindings.OR,以便我可以动态向其添加/删除子可见属性?如果是,那怎么办?如果没有,那么在这种情况下使用什么解决方案? 问题答案: 您可以

  • 我在导航图中实现了一个嵌套图,它有两个图。在第一个图中,有3个片段,在第二个图中,有2个片段。图2包含在图1中。我想导航到(图1步骤1)到(图2步骤2)。我们不能定义两个嵌套片段之间的动作。那么,有什么方法可以将动态目的地分配给导航? 图1 图2 我已经检查了这个解决方案,但它不适用于嵌套图!