Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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
Java 关系实体约定的Rest控制器_Java_Rest_Spring Mvc - Fatal编程技术网

Java 关系实体约定的Rest控制器

Java 关系实体约定的Rest控制器,java,rest,spring-mvc,Java,Rest,Spring Mvc,我有三个实体的简单java应用程序: User Rent Tool 用户可以租用多个工具,工具可以由多个用户租用。租金实体用于跟踪租金历史,因此它与用户和工具都有多对一关系 目前,我有两个rest控制器: 用户控制器 工具控制器 负责为用户或工具提供服务的 问题是,现在我想返回特定用户的租金历史记录。我是否应该在UserController中创建具有如下映射的方法 /users/{id}/rents /rents?userId={userId} 或者最好创建单独的控制器(如RentCont

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

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

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

问题是,现在我想返回特定用户的租金历史记录。我是否应该在UserController中创建具有如下映射的方法

/users/{id}/rents
/rents?userId={userId}
或者最好创建单独的控制器(如RentController)和方法(如mapping)

/users/{id}/rents
/rents?userId={userId}
我认为第一种方法在URI方面更干净,但我必须在UserController中使用RentService,因为这些类来自不同的包(我使用逐个包的方法),所以我觉得有点不对劲。 问题还在于POST或PUT等方法,我认为最好的选择如下:

POST /rents - RentDto as body
PUT /rents/{id} - RentDto as body
或者可以采用以下方法:

GET /users/{id}/rents
在RentController中而不是在UserController中? 你如何解决这些问题?你有什么建议

/users/{id}/rents
关于我的意见,如果你使用上面的url,并且只返回用户的列表,那么它会更清楚、更容易理解

/rents/{id}/user
将有助于跟踪世卫组织目前使用的租金

关于我的意见,如果你使用上面的url,并且只返回用户的列表,那么它会更清楚、更容易理解

/rents/{id}/user

将有助于跟踪世卫组织目前使用的租金。

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

通常,我们使用查询参数,以防您想要获取一个或多个具有非常特定信息的列表项


我建议提供更多详细信息。

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

通常,我们使用查询参数,以防您想要获取一个或多个具有非常特定信息的列表项


我建议您提供更多详细信息。

我将创建RentController,并为rent实体使用CRUD方法。通过这种方式,你可以坚持坚实的原则,让课堂保持单一的目的。如;。如果您必须检索工具的租金计数?是否将其他方法添加到工具控制器?这样,用户和工具控制器都会有返回租金数据的方法,这并不完美。租金表是否真的只包含两个实体之间的多个关系,或者它可以扩展为包含一些额外的数据,如租金特定信息?尽量避免仅仅因为某些东西似乎在逻辑上适合您,就将您的UserResource/UserService变成怪物。它还包含其他数据,如工具出租的日期和用户返回的日期。我将使用rent实体的CRUD方法创建RentController。通过这种方式,你可以坚持坚实的原则,让课堂保持单一的目的。如;。如果您必须检索工具的租金计数?是否将其他方法添加到工具控制器?这样,用户和工具控制器都会有返回租金数据的方法,这并不完美。租金表是否真的只包含两个实体之间的多个关系,或者它可以扩展为包含一些额外的数据,如租金特定信息?尽量避免让你的UserResource/UserService成为一个怪物,因为某些东西似乎在逻辑上适合于它。它还包含其他数据,如工具的租赁日期和用户归还日期。好的,那么第二个问题是,我应该将此方法放在何处?用户控制器?然后UserController不仅对用户负责,所以它可能会像@CrazySabPath指出的那样令人困惑。租金管理员?当有人搜索/api/users/1/rents时,第一个位置可能是UserController,因为URI建议这样做。通常,我会引导自己寻找正确的范围。这显然是我的用户信息,基本路径是/users/,因此我将它放在UserController下,因为:1。它是用户特定的信息;2.基本路径指导我们在对此服务进行故障排除时搜索用户范围OK,那么第二个问题是我应该将此方法放置在何处?用户控制器?然后UserController不仅对用户负责,所以它可能会像@CrazySabPath指出的那样令人困惑。租金管理员?当有人搜索/api/users/1/rents时,第一个位置可能是UserController,因为URI建议这样做。通常,我会引导自己寻找正确的范围。这显然是我的用户信息,基本路径是/users/,因此我将它放在UserController下,因为:1。它是用户特定的信息;2.基本路径指导我们在对此服务进行故障排除时搜索用户范围