关系实体约定的Rest控制器

时间:2018-10-10 13:57:11

标签: java rest spring-mvc

我有带有三个实体的简单Java应用程序:

Animal

用户可以租用多个工具,而工具可以由多个用户租用。 Rent实体可以跟踪租金历史,因此与User和Tool都具有多对一的关系。

目前,我有两个rest控制器: 用户控制器 工具控制器 负责服务用户或工具的人。

问题在于,现在我要返回特定用户的租金历史记录。我应该在UserController中使用映射来创建方法吗?

User
Rent
Tool

或者最好创建单独的控制器(如RentController)和具有映射的方法(如

/users/{id}/rents

我认为第一种方法在URI方面更干净,但是我必须在UserController中使用RentService,并且由于这些是来自不同包的类(我使用逐个功能的方法),所以我感觉有些问题。 问题也出在POST或PUT之类的方法上,我认为最好的选择是这样的:

/rents?userId={userId}

或者也许可以使用方法:

POST /rents - RentDto as body
PUT /rents/{id} - RentDto as body

在RentController中而不在UserController中? 您如何解决此类问题,您将提出什么建议?

2 个答案:

答案 0 :(得分:3)

当我们谈论RESTful API时,我们应该能够在不使用任何额外参数的情况下实现任何CRUD方法,因此,考虑到这一点,我将使用路径参数方法(/users/{id}/rents)。

通常,如果您要获取具有非常特定信息的列表或列表项,通常使用查询参数。

我建议this article以获得更多详细信息。

答案 1 :(得分:0)

/users/{id}/rents

关于我的意见,如果您使用上述网址,并且只返回用户的租金清单,则更清晰易懂。

/rents/{id}/user

谁将使用帮助跟踪当前租金。