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



我有一些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/请求应用程序。在这种情况下,不存在端口冲突(实际上冲突场景不适用)。您已经提到了您在端口3000上的angular工作,我假设您已经将服务URL硬编码为(可能)http://localhost:3000/。现在,由于服务器运行在8080上,这将不起作用。你需要做的是将应用程序中的服务调用url相对化,或者将Angular应用程序中的服务url硬编码http://localhost:8080/。还有另一个需要考虑的问题,如果您使用IP通过浏览器访问应用程序,并且在服务调用URL中使用硬编码的本地主机,那么就会出现跨域问题。要避免这种情况,请使用http://localhost:8080…从浏览器访问应用程序。然而,如果你在Angular应用程序中相对化服务调用的url,那么你可以在浏览器中使用IP或localhost。

相关内容

最新更新