【发布时间】:2022-01-01 14:44:41
【问题描述】:
有两个实体,User 和 Order。 User 实体有一个Set<Order> 的订单,它是一个双向映射。
现在我有两个控制器,一个控制器叫做OrderController,它有一些端点来检索所有订单等。第二个控制器叫做UserController,它有一些与用户相关的端点,但它也有/users/{username}/orders 和 /users/{username}/orders/{orderId} 等端点。
问题是我应该在哪里添加端点来持久化订单?它应该是OrderController 中的POST,即/orders,还是应该在UserController 中作为/users/{username}/orders 端点?订单由用户创建,OrderController 仅用于检索所有订单,而不仅仅针对特定用户。
你对它应该如何设计有什么建议吗?
【问题讨论】:
-
我不会在用户下嵌套订单。仅仅因为用户拥有一组订单并不意味着它“拥有”这些订单。如果它们是具有自己 id 的独立持久实体 - 即全局唯一,则只需
/orders/orderid。 -
这种情况下订单是依赖于用户的,因为当我们删除一个用户时,他的所有订单都会被删除。用户应该能够添加订单、编辑订单等,所以我相信用户控制器中应该有一个端点。订单控制器用于查看所有订单。 WDYT?
标签: java spring rest jpa spring-rest