java - 在 Spring Application 中拥有 RestController 和 Controller 的最佳实践
问题描述
我不是在问是否可能,我知道这是可能的,但我想知道在我的应用程序中有前端的同时提供休息服务的最佳方式是什么。
我正在开发一个 Spring Boot 应用程序,我目前有一个调用 jsp 页面的控制器和一个单独的RestController。我希望能够通过 Android 应用程序使用它。
那么在我的应用程序中同时拥有一个 Controller 和一个单独的Restcontroller 是否正确?例如,将从 /api/* 调用 Rest 控制器方法。
编辑:我知道两者之间的区别,但是因为我希望能够返回一个视图(而且我不应该使用 RestController 这样做)并且我想要一个休息服务我想知道我是否可以同时拥有他们(当然是分开的)。
非常感谢你。
解决方案
我会说这是可能的,但在典型的分层spring应用程序(将回到那个)中被认为是一种不好的做法(除了像REST应用程序中的Swagger控制器这样的极端情况)
你可能想要创建一个multi -module 项目,可能看起来像这样:
- 父项目
-- 核心
-- web api (jsp based)
-- rest api (for android)
web api和rest api都依赖于核心。
web api 和 rest api 是独立的部署单元。您可以将它们部署在同一台服务器上或作为单独的应用程序运行(例如使用 spring boot)。取决于您的用例。
这样您就可以将业务逻辑集中在一个地方(核心)。
您可能还想阅读有关ports and adapters
架构的信息,这可能会让您了解如何以更有条理的方式解决这个问题,而不仅仅是让控制器和 RestController 并排放置
推荐阅读
- c++ - /usr/bin/ld: 尝试进行安装时找不到 -lusb-1.0
- c++ - 在 gcc 8.2 但不是 MSVC 19 中编译的模板代码
- php - 使用htaccess url更改子域而不创建子域重写php
- reactjs - 无法从 Marvel API 获取数据 - 传递的 API 密钥不允许传递的引荐来源网址
- r - 使用来自 Shiny 应用程序中的进程或读取 RDS 文件的数据
- javascript - 使用 window.open 检测“php://output”的完成
- javascript - next.js 从对象动态导入组件
- html - 格式化代码时HTML img标签中断
- r - 使用 Shiny R 在 UI 中的反应对象
- unit-testing - GTEST:实际函数调用计数与 EXPECT_CALL 不匹配