为 Spring Boot REST API 后端构建 Web 前端?

Posted

技术标签:

【中文标题】为 Spring Boot REST API 后端构建 Web 前端?【英文标题】:Building a web frontend to a Spring boot REST api backend? 【发布时间】:2017-10-25 04:42:30 【问题描述】:

所以,我正在开发一个安卓应用程序来教自己一些这些概念。我目前正在使用 Spring Boot 开发后端,我正在将其实现为 RESTful API。

我一直在大量阅读这件事,每个人似乎都有不同的方法,我在这一点上太缺乏经验和天真,无法更好地了解。

我想做的是有一种方法来实现应用程序的网站组件(因为该应用程序仅是 android,我需要能够允许 iPhone 和桌面用户使用它,我最终可能会为此使用 PhoneGap 之类的东西)。

我目前的理解为我提供了一些路径,但我不确定该做什么或如何去做。

一种方法是,我可以创建一堆 JSP 模板并修改我的 REST 控制器,以根据标题中包含的信息返回页面,确定是需要 JSON 还是需要整个页面。一个明显的缺点是需要控制每个 URL 的方法(一个返回 JSON,一个返回 html/JSP,遵循 MVC 模式)。

我可以想到的另一种方法是创建一个完全独立的 Web 应用程序,它将 REST API 视为填充其页面的数据源。这甚至可以用 phpjavascript 之类的东西来完成。当然,不利的一面是开发(和维护)一个完全独立的应用程序的额外工作,以及为所需的每一点数据与它交互所需的大量样板。

有人可以澄清一下吗?我的头在游泳。我知道我不是唯一遇到此问题的人,但要找到有关该主题的质量信息却异常困难。

【问题讨论】:

一个不会“返回 JSP”。 JSP 只生成 HTML/纯文本 我知道,但说起来似乎更容易。 类似于不返回 PHP。 所以除了这个问题似乎有点宽泛/基于意见(即“你应该使用哪个框架”)之外,你到底在哪里实现这个? 在事物的架构中。我不是在寻找可以使用的技术,而是在寻找合适和推荐的方法和模式。 【参考方案1】:

您可以保留您的后端服务休息基地。使您可以拥有良好的代码可维护性和可扩展性。 你可以构建 Android 应用来使用你的 rest api 并渲染视图,同样你可以使用 Angular、ReactJS 等框架构建 SinglePage 应用来使用服务器端的 rest api 并渲染视图。

它们可能必须作为两个独立的项目处理,我认为这是处理的一个优势。 Rest API 结构中的任何更改都可能必须在两个客户端项目中进行更改,并且可以再次使用良好的文档工具(如 Swagger.io)和适当的自动化集成测试用例进行管理。

我过去使用这种方法构建了 Android 原生应用程序、Web 前端(Angular)、服务(spring boot 和 scala),并且在这种架构中做得很好。

【讨论】:

一个显着的缺点是两者之间需要额外的网络通信。想法? 是的,当涉及到服务应用程序时,网络开销可能相当大,这是无论如何都无法避免的,因为应用程序在用户手机上运行。但是对于 Web 前端和服务,您可以确保它们在同一台服务器机器或同一网络中可用,因此网络延迟可能会非常小。【参考方案2】:

您也可以使用完全基于 rest 的网络应用程序做得很好!实际上,您可以在您正在创建的混合 Android 应用程序中重复使用大量代码。 如果你想使用 mvc,你可以有一个服务器,为所有应用程序提供公共服务和 dao 层,并为 web 和 rest 提供不同的控制器。

【讨论】:

以上是关于为 Spring Boot REST API 后端构建 Web 前端?的主要内容,如果未能解决你的问题,请参考以下文章

在Spring Boot Data JPA Rest API中使用PostgreSql时,表未找到错误

如何使用Azure AD B2C保护Spring Boot REST API?

JPA Spring Boot Hibernate Rest API:为啥Hibernate在插入之前会删除?

如何在 Spring-Boot 项目中为电话号码身份验证创建 REST API?

如何在Spring Boot Rest API中的BeanUtils.copyProperties中将String转换为枚举

CORS 策略:请求的资源 Spring Boot Rest API 和 VUE 上不存在“Access-Control-Allow-Origin”标头