Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringBootRESTAPI:在JSON中公开(或不公开)关联实体_Spring_Spring Boot_Spring Data - Fatal编程技术网

SpringBootRESTAPI:在JSON中公开(或不公开)关联实体

SpringBootRESTAPI:在JSON中公开(或不公开)关联实体,spring,spring-boot,spring-data,Spring,Spring Boot,Spring Data,我正在构建一个基于Spring引导的应用程序,以公开JSON REST API。 在这个应用程序中,我有一个1对多的关系:一个订单有多个项目(一个项目恰好属于一个订单)。 我希望有以下4个API端点: 获取所有订单:在这种情况下,我只需要订单本身-因此排除相关项目 获取单个订单:获取订单本身,包括相关项目 获取单个项目:获取单个项目,包括其所属的订单(此处仅包括订单的ID(=主键)或整个订单本身并不重要) 获取所有项目:获取所有项目;关联的顺序不是必需的,但也不会有任何影响 不幸的是,我对如

我正在构建一个基于Spring引导的应用程序,以公开JSON REST API。 在这个应用程序中,我有一个1对多的关系:一个订单有多个项目(一个项目恰好属于一个订单)。 我希望有以下4个API端点:

  • 获取所有订单:在这种情况下,我只需要订单本身-因此排除相关项目
  • 获取单个订单:获取订单本身,包括相关项目
  • 获取单个项目:获取单个项目,包括其所属的订单(此处仅包括订单的ID(=主键)或整个订单本身并不重要)
  • 获取所有项目:获取所有项目;关联的顺序不是必需的,但也不会有任何影响
不幸的是,我对如何对公开API端点的关联和/或控制器方法建模有点迷茫。 你有什么提示给我吗


非常感谢!

我不确定是否有更好的方法,但我的方法是使用Hibernate建模和获取关系,但是以一种懒惰的方式()


在控制器中,您不返回实体,而是返回一个可能与您的实体非常相似的DTO类。该DTO由某个映射器组件创建,该组件提供包含或不包含关联项等逻辑。

您的第一选择应该始终是求助于软件设计模式。在开发应用程序时可能需要远程连接(或不需要),有一个应该在rest api中实现:

考虑到您是在Java/Spring框架下开发的,您应该看看这个库并将其添加到Java/Spring框架中


我已经在RESTAPI中成功地完成了相同的任务。

GET/orders;GET/orders/{id}记住在服务中加入fetch(或fetchType.Eager);GET/items;GET/orders/{id}/items,如果您想为特定的订单提供项目;GET/items/{id}single item;