【发布时间】:2019-08-19 15:28:15
【问题描述】:
当为 REST API 使用 Spring MVC 时,我通常具有普通组件 - 用于数据库访问的存储库、用于 CRUD 操作的服务和用于 Web 层的 RESTController。
当我想添加一个不是典型 CRUD API 的新 API 时,事情就会失去平衡。例如,假设我有一个 Person 类
class Person{
private Long id;
private String name;
private List<Person> familyMembers;
private Address address;
private Bank bank;
}
我想添加一个 api 将通过调用POST /persons/{personId}/registerToBestBank
该方法将进行各种非常具体的计算,它可能会将其注册到拥有大多数家庭成员的银行,或者最接近他的银行 - 或者某种复杂的计算,取决于其他实体。
RestController 是唯一会使用这个计算的地方,所以我把它放在那里,而不是向服务添加更多的 API,这会给系统增加很多噪音。
有最佳实践吗?
【问题讨论】:
-
我认为使用所谓的
service类是放置所有这些的正确位置。您可以将编排的权重放在该层上,并将 API 留给请求/响应......这是有道理的。我完全明白你在说什么,但从长远来看,有时发出“一些”噪音会更好。 -
你的问题的答案是
MVC设计模式en.wikipedia.org/wiki/Model–view–controller
标签: java spring rest spring-boot spring-mvc