java - 构建 REST Angular 应用程序的正确方法是什么?

标签 java rest angular vert.x

我有一些java应用程序。它为 REST 客户端提供 json 并使用 localhost:8080 来服务请求。

我还有 Angular 2 应用程序,它使用 localhost:3000 来工作(我假设我可以将 typescript 文件编译为 js 并在没有 lite-server 的情况下使用,但不能:

zone.js@0.6.25?main=browser:269 Uncaught Error: More tasks executed then were scheduled.
index.html:20 Error: Error: XHR error loading file:///C:/dev/angular2app/app/main.js(…)

)。我的 Angular 服务正在尝试从某些 url 获取 json 表单服务器,如下所示:

http://localhost:8080/api/test

当然,我收到有关禁止跨域请求的错误。但是,如果我在与 java 应用程序相同的端口上启动 Angular 应用程序,其中一个应用程序将没有位置(端口繁忙等)。

请问谁可以解释构建这样两个应用程序的正确架构方法?

最佳答案

在你的情况下,AngularJS应用程序,即JS、HTML文件等,需要打包成一个WAR文件(我假设它是一个WAR文件,因为你使用的是Tomcat 8080),否则下面的概念也适用。将应用程序部署到容器上后(假设容器在 8080 上运行),您将使用可能的 URL http://IP:8080/appName/ 来请求该应用程序。 。这种情况下,不存在端口冲突(实际上不存在冲突场景)。您已经提到您的 Angular 在端口 3000 上工作,我假设您已将服务 URL 硬编码为(可能)http://localhost:3000/ 。现在这不起作用,因为服务器在 8080 上运行。您需要做的是使应用程序或硬代码中的服务调用 URL 相对化 http://localhost:8080/ Angular 应用程序中的服务 URL。还有另一个考虑因素,如果您使用 IP 通过浏览器访问应用程序,并且在服务调用 URL 中使用硬编码的 localhost,那么就会出现跨域问题。为此,请使用 URL http://localhost:8080 ...从浏览器访问应用程序。但是,如果您在 Angular 应用程序中相对化服务调用 URL,则可以从浏览器使用 IP 或本地主机。

关于java - 构建 REST Angular 应用程序的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39656978/

相关文章:

rest - JAX-RS/Jersey 中的资源类和提供程序类有什么区别?

java - JWT 中的 "Secret"应该是什么?

javascript - *ngFor 显示空数组中的元素

angular - 在 Observable.create 中取消 HTTP 请求

javascript - Angular 8 - 如何将数据从 1 个组件导出到 2,然后再导出到 3

java - 复制程序

java - 指定私有(private)方法mockito的返回值

java - 未找到 Java 类 java.util.ArrayList... 和 MIME 媒体类型文本/xml 的消息正文编写器

java - Mojo.getLog() 方法有什么作用?

java - @Transactional 在 CDI Bean 的基类中被忽略