gpt4 book ai didi

javascript - Spring MVC AngularJS 前端与后端分离

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:27 25 4
gpt4 key购买 nike

我有一个相当大的 Spring MVC + AngularJS 应用程序。 Spring MVC 主要作为 REST API 工作,但不完全(安全性、一些路由、Wro4j 资源打包)当我开始它的开发时,在 Web 项目方面没有太多经验。

应用程序部署在 Amazon Elasticbeanstalk 上。

前端人员加入了我,我们必须以某种方式分离开发流程。

问题是:

  1. 将它们分成 2 个应用程序需要执行哪些基本步骤?

  2. 部署过程是怎样的?前端/后端是否必须部署为单独的应用程序?

  3. 关于一般最佳实践有什么建议吗?

最佳答案

我认为,如果您的应用程序非常大并且后端构建需要大量时间(10+分钟),或者您不想每次出于任何充分的理由重建整个应用程序,那么分离 angularJS 应用程序并单独部署的唯一原因。将 AngularJS 应用程序放在 Spring MVC 下,即使它只是主页,也会给您带来很多优势:您可以使用 Spring 生态系统、集中式安全性、登录和访问控制、SSO、大量集成、Spring 社交等。不知道为什么你真的需要将它们分成两个应用程序。但无论如何。

  1. 如果您想分离 AngularJS 应用程序,您需要将有关路由的所有逻辑从 Controller 或 jsp 文件移动到 AngularJS 应用程序。实现 token 基础身份验证/登录。然后,您可以在 Angular 常量 block 中定义 REST_BASE_URL 常量,并使用 Everywhere($http, $resource) 生成请求 url。如果你基本上工作在 Angular 部分,你可以在远程服务器上设置后端,并使用 nginx 或任何小型服务器在本地仅运行 Angular 应用程序,并在 Google Chrome 上工作(确保你使用以下参数运行 chrome:--args --disable-web-security --user-data-dir ~/)。遗憾的是,您无法在 Firefox 中禁用 CSRF 检查。

  2. 您可以单独构建和部署 2 个应用程序,这很好。

  3. 您还需要创建自己的 AuthenticationEntryPoint 并返回 SC_UNAUTHORIZED(401),而不是 Spring Rest 中的登录页面。如果有 Angular ,您可以添加全局拦截器来捕获 401 并显示登录页面或对话框,如下所示:

.factory('authHttpResponseInterceptor',['$q','$location',function($q,$location){
return {
response: function(response){
if (response.status === 401) {
console.log("Response 401");
}
return response || $q.when(response);
},
responseError: function(rejection) {
if (rejection.status === 401) {
window.location.reload();
}
return $q.reject(rejection);
}
}
}])

关于javascript - Spring MVC AngularJS 前端与后端分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39121156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com