java - 在 Spring Application 中拥有 RestController 和 Controller 的最佳实践

标签 java spring rest

我不是在问它是否可能,我知道它是但我想知道在我的应用程序中有前端的同时提供休息服务的最佳方式是什么。

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

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


编辑: 我知道两者之间的区别,但由于我希望能够返回一个 View (我不应该使用 RestController 这样做)并且我想要一个休息服务,我想知道我是否可以同时拥有它们(当然是分开的)。

非常感谢您。

最佳答案

我想说这是可能的,但在典型的分层 spring 应用程序中被认为是一种不好的做法(除了像 REST 应用程序中 Swagger 的 Controller 这样的极端情况)(稍后会讲到)
你可能想要创建一个多模块项目,它可能看起来像这样:

  • 父项目
    -- 核心
    -- 网络 API(基于 jsp)
    -- 休息 api (for android)

web api和rest api都依赖于核心。
web api 和 rest api 是独立的部署单元。您可以将它们部署在同一台服务器上或作为单独的应用程序运行(例如使用 spring boot)。取决于您的用例。
这样,您就可以将业务逻辑集中在一个地方(核心)。

您可能还想阅读有关端口和适配器架构的内容,这可能会让您了解如何以更有条理的方式解决这个问题,而不仅仅是让 Controllers 和 RestControllers 并排放置

关于java - 在 Spring Application 中拥有 RestController 和 Controller 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50470166/

相关文章:

Java Map,使用值属性进行过滤

java - 如何在 weka 中选择最佳的 k 均值聚类

java - Spring mail - 电子邮件形式的用户名

java - 跨多个网络应用程序的一个 Hibernate FullTextEntityManager

javascript - 无法从本地主机通过 JavaScript 调用 API

java - 在 Java 中等待通知

java - JGraphT:如何尽可能有效地表示一组顶点和边

当我在 spring mvc 中使用验证时发生 java.lang.annotation.AnnotationFormatError

rest - Spring @ExceptionHandler 不适用于 @ResponseBody

linux - Linux 的命令行 RESTful 服务调用程序?