如何在 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.
中描述的界面来制作自定义响应
由于这两个属性(profile
和 userPosts
)似乎是用户项资源的关联,因此执行如下操作就足够了:
@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
参数传递给公开的资源以查看扩展表示。
作为替代方案,您可以为 Profile
和 Post
创建这些类型的接口,并在这两种类型的存储库上配置 @RepositoryRestResource
以包含 excerptProjection = YourProjectionInterface.class
.这将导致在响应中包含关联时呈现投影(即可以嵌入实际链接到资源)。
有以下 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.
中描述的界面来制作自定义响应由于这两个属性(profile
和 userPosts
)似乎是用户项资源的关联,因此执行如下操作就足够了:
@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
参数传递给公开的资源以查看扩展表示。
作为替代方案,您可以为 Profile
和 Post
创建这些类型的接口,并在这两种类型的存储库上配置 @RepositoryRestResource
以包含 excerptProjection = YourProjectionInterface.class
.这将导致在响应中包含关联时呈现投影(即可以嵌入实际链接到资源)。