我最近一直在谷歌搜索,但我发现自己找不到答案。
我有一个由Spring Security保护的完整Spring MVC应用程序,以及向控制器公开逻辑的服务(控制器 - > service - > repository - > POJO)。
目前除了登录控制器之外,我的所有控制器都只提供JSON / XML,我希望它能保持这种状态。我不想在每个控制器上呈现不同的视图。
但是,我希望能够将Web应用程序与后端分开,因为我希望能够使用比Web浏览器更多的平台来集成我的服务。
目前我有常规的Spring MVC应用程序:
登录是使用Thymeleaf渲染视图和Spring Security完成的,它只是过滤应用程序根目录下的所有URL。在此之后,它只是一堆静态文件作为资源:
Spring控制器发送一个“{ontrollerName} / layout”来提供用于给定Spring Controller下所有数据的AngularJS HTML部分。
我想要的是一种将/ webapp目录中的所有内容与项目的其余部分分开的方法。我在这里研究了一些不同的解决方案,例如使用Apache Proxy,我的Apache Http服务器托管客户端代码,后端使用Ajax与后端控制器进行通信,Tomcat托管后端。但是,我听说像这样代理是不安全的。然而,我可能在这里犯错了。
所以,我希望得到答案的问题是: 1.编写一个使用Apache http服务器代理的客户端来提供对服务器上Ajax的访问是否可以?
如果没有;我该怎么办?尝试从/ webapp目录中提取客户端是否有任何意义,或者这只是我创建的一些愚蠢的想法,因为能够部署它们而不必相互转发它们似乎很酷?
关于如何使用单独的模块构建项目,是否有最佳实践? Think Gradle为多个模块构建脚本。
我应该用不同的术语思考并使用一种不基于Spring MVC的方法吗?如果是的话,请告诉我。
我希望这对你们来说很明确。
答案 0 :(得分:0)
解决方案是使用通过OAuth 2进行身份验证的restful API的简单方法。
基本上,两个最佳选择是混合解决方案(部分restful API和部分服务器端页面呈现)或完整的RESTful API,您可以在静态Web客户端中实现所有功能。这样就不需要多模块项目并将一起打包在一个包中。