如何在 Spring 数据 REST 资源中 return 表示关联?

How to return representations of associations in a Spring Data REST resource?

有以下 URLS - /users/2/profile , /users/2/userPosts

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

所以,我正在考虑从 Spring MVC 对 SDR url 进行 2 次调用,我们可以使用 RestTemplate 和一些 JSON concat 实用程序来做到这一点,这里服务器和数据库在同一台机器上所以RestTemplate 可能会有 localhost

举个例子会有帮助

您可能更想查看 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 .这将导致在响应中包含关联时呈现投影(即可以嵌入实际链接到资源)。