我有带有三个实体的简单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中? 您如何解决此类问题,您将提出什么建议?
答案 0 :(得分:3)
当我们谈论RESTful API时,我们应该能够在不使用任何额外参数的情况下实现任何CRUD方法,因此,考虑到这一点,我将使用路径参数方法(/users/{id}/rents
)。
通常,如果您要获取具有非常特定信息的列表或列表项,通常使用查询参数。
我建议this article以获得更多详细信息。
答案 1 :(得分:0)
/users/{id}/rents
关于我的意见,如果您使用上述网址,并且只返回用户的租金清单,则更清晰易懂。
/rents/{id}/user
谁将使用帮助跟踪当前租金。