如何在Spring Data REST资源中返回关联的表示?

时间:2015-01-06 08:58:10

标签: spring spring-mvc spring-data spring-data-rest

有以下网址 - / users / 2 /个人资料,/ users / 2 / userPosts

我需要在服务器端连接Spring Data REST结果的输出,并从它们构建单个JSON并发送到不同的URL /users/2/custom

所以,我想从Spring MVC调用2个SDR​​ URL,我们可以使用RestTemplate和一些JSON concat实用程序,这里服务器和数据库在同一台机器上,所以RestTemplate可能有localhost

一个例子可以帮助

1 个答案:

答案 0 :(得分:1)

您可能更愿意查看Spring Data REST的投影功能,它允许您使用此blog post中所述的接口来制作自定义响应。

由于两个属性(profileuserPosts)似乎都是用户项资源的关联,因此应该这样做:

@Projection(types = User.class)
interface UserWithDetails {

  // List getters for basic properties you want to expose…

  // Add dedicated getters for associations to be included

  Profile getProfile();

  List<Post> getUserPosts();
}

客户端现在可以将projection参数传递给公开的资源,以查看扩展的表示。

作为替代方案,您可以为ProfilePost创建这些类型的接口,并在这两种类型的存储库上配置@RepositoryRestResource以包含excerptProjection = YourProjectionInterface.class。只要响应中包含关联(即可以嵌入实际链接到资源),这将导致呈现投影。