【发布时间】:2022-01-21 17:03:42
【问题描述】:
假设我们有两个实体。 User 实体可以有多个优惠,Offer 必须有一个 User。
class User {
...
@OneToMany(mappedBy = "user", orphanRemoval = true)
private Set<Offer> offers;
}
class Offer {
...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "fk_user")
private User user;
}
此时有两个控制器。 UserController 和 OrderController。 UserController 映射在/api/v1/users/ 下,OrderController 映射在/api/v1/orders/ 下。
- 获取用户报价列表的端点应该是什么样的?
- 应该在同一个控制器中吗?我确实有按功能项目结构。
- 如何修改或删除特定
User的Offer?如果我们有/api/v1/users/{username}/offers/{offerId}来删除或更新报价,我们是否还应该有/api/v1/offers/{offerId}端点来允许编辑或删除报价?也许值得让管理员拥有它?
【问题讨论】:
-
我认为这可能会对restfulapi.net/resource-naming 有所帮助,至于项目结构取决于您自己,我更喜欢将独特的资源放在他们自己的控制器中。无论您是需要通过用户还是直接修改报价,都应由消费者的要求决定。
标签: java spring hibernate rest