我们正在为Spring遗留企业web应用程序开发一个新的REST应用程序(在此之前,它与Adobe前端进行通信)。
作为一般规则,我们声明我们为应用程序中的每个模型创建了一个@RestController。我们还有一个BaseController来处理每个模型上的CRUD操作。
事实上,我们的应用程序的后端非常庞大,至少要计算2-3个模型类,因此为每个类创建一个控制器似乎是不现实的。
除此之外,我们还为API文档提供了美国Swagger文档,因此,对于我们添加的每个控制器,Swagger在服务器启动时都要花一些时间来映射相应的端点。我担心这会在很长的服务器启动时间(我们使用Tomcat)中升级。
映射每个模型类的控制器是反模式吗?
谢谢
发布于 2017-12-15 19:17:57
我不认为将控制器映射到模型会被认为是反模式。如果您没有将控制器映射到每个模型,那么您目前还计划如何与该模型交互?
听起来核心问题是,有很多模型类,而将每个类映射到一个控制器需要付出很大的努力。您提到的规则是为每个模型创建一个控制器,但是每个模型真的需要直接交互还是可以将模型类组合成一个更广泛的“资源”?例如,如果您有一个人和一个电话号码模型,您是否需要分别公开该人和电话号码?或者可以将它们“合并”到一个要公开的单一资源中?在不知道模型类代表什么的情况下,我建议查看它们并确定是否有更高级别的资源要公开。如果模型A、B和C是“资源”R的组件,则不要独立地公开它们,而是通过资源R的控制器公开它们。
如果每个模型都是独立的,并且需要能够单独操作,那么我相信每个模型都需要自己的控制器。如果您想加快这个过程,我唯一能想到的就是大多数控制器只执行CRUD来自动化这些类的生成,或者既然您提到您正在使用Spring,那么在这个框架内搜索工具来为您做一些繁重的工作(例如Spring数据Rest项目)。
https://softwareengineering.stackexchange.com/questions/362466
复制相似问题