在Spring应用程序中使用RestController和Controller的最佳实践

我不是在问这是否可能 ,我知道它是,但我想知道在我的申请中有一个前端,提供rest服务的最佳方式是什么。

我正在开发一个Spring Boot应用程序,我目前有一个调用jsp页面的控制器和一个单独的 RestController。 我希望能够使用Android应用程序使用它。

那么在我的应用程序中同时拥有一个Controller和一个单独的 Restcontroller是否正确? 例如,将从/ api / *调用Rest控制器方法。


编辑:我知道两者之间的区别,但因为我希望能够返回一个视图(我不应该使用RestController)并且我想要一个rest服务我想知道我是否可以同时拥有他们(当然是分开的)。

非常感谢你提前。

我会说这是可能的,但在一个典型的,分层的Spring应用程序中,这被认为是一种不好的做法(除了在REST应用程序中像Swagger的控制器这样的角落案例)(将会回到那里)
您可能想要创建一个多模块项目,可能看起来像这样:

  • 父项目
    – 核心
    – web api(基于jsp)
    – rest api(适用于android)

web api和rest api都取决于核心。
web api和rest api是单独的部署单元。 您可以将它们部署在同一台服务器上,也可以作为单独的应用程序运行(例如使用spring boot)。 取决于你的用例。
有了它,您可以将您的业务逻辑放在一个地方(核心)。

您可能还想了解ports and adapters架构,这可能会让您了解如何以更有条理的方式解决这个问题,而不仅仅是将控制器和RestControl并排放置