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

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

百里默
2023-03-14

有以下URL-/users/2/profile、/users/2/userPosts

我需要在服务器端整合两个Spring Data REST结果的输出,并从它们构建单个JSON,并在不同的网址上发送/用户/2/自定义

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

举个例子会有帮助

共有1个答案

司寇安宜
2023-03-14

您可能更希望了解SpringDataREST的投影功能,它允许您通过使用本文所述的接口来定制响应。

由于这两个属性(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();
}

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

或者,您可以为ProfilePost创建这些类型的接口,并在存储库上为这两种类型配置@RepositoryRestResource,以包含摘录投影=YourProjectionInterface。类。这将导致在响应中包含关联时呈现投影(即,可以嵌入实际链接到资源的关联)。

 类似资料:
  • 问题内容: 我正在使用Spring Boot和Spring Data Rest创建一个简单的CRUD- App(购物清单)。我有资源:。是否有一种简单的方法可以只返回属于发送请求的用户的资源?(多个用户支持)因此,用户仅获得自己的ShoppingItems,而不是每个ShoppingItem。还是我必须由我自己实现一个Controller? 我发现Spring DataREST基于用户过滤数据,这

  • 问题内容: 目前,我有一个使用Spring Data REST的Spring Boot应用程序。我有一个域实体Post,它与另一个域实体有关系。这些类的结构如下: Post.java: Comment.java: 他们的Spring Data REST JPA存储库是以下各项的基本实现CrudRepository: PostRepository.java: CommentRepository.ja

  • 他们的Spring Data REST JPA存储库是的基本实现: postrepository.java: commentrepository.java: 一切似乎都正常工作。当我运行应用程序时,一切看起来都正常工作。我可以将一个新的POST对象发布到,如下所示: 正文: 中的结果: 创建资源并将其与此相关联的正确方法是什么?如果可能的话,我希望避免直接发布到。

  • 我已经创建了一个RESTAPI,我想我遇到了RESTful问题。 它与以下问题有关: 检索相关数据 我有一个叫做“案例”的资源。案例还包含相关数据,如用户和消息。问题是我想从案例中获取相关的查询用户和消息数据,但我不确定URI设计。也有不同类型的相关/计算数据。这些相关数据应用于创建数据可视化。 我如何获取案例/用户/消息是RESTful的: 我创建相关资源的第一个想法是(我认为URI看起来不对,

  • 我在我的web应用程序中使用了Spring Boot1.5.7、Spring Data REST、Spring JPA、Hibernate、Spring HATEOAS、Spring Validation和Swagge。这个应用程序提供RESTendpoint,这些endpoint将由Angular客户机使用。 在我的模型中,许多实体都有一个列表。用户、车票、退票等有一个。根据我在网上找到的一些文

  • 我想知道如何通过REST调用删除多对多关联。我能够创建记录并将其关联,但不知道如何删除。 我有一个SpringBoot项目,在这个项目中,我使用REST和HATEOAS绕过服务和控制器,并直接公开我的存储库。 我有一个用户模型/域类 如您所见,我有一个roles成员,它与Role类有多对多的关联,其代码如下: 我的仓库看起来是这样的: 用户库 角色还原 现在一切都好了。当我从浏览器访问项目根目录时