【问题标题】:How to pass a parameter to angular from Spring Boot?如何从 Spring Boot 将参数传递给 Angular?
【发布时间】:2020-03-08 22:53:05
【问题描述】:

我在 Spring Boot 应用程序中运行了一个 Angular 6 应用程序。

是否可以从angular app里面的spring boot app获取参数?

为什么? spring 应用程序有一个 REST 服务,为 angular 应用程序提供配置(我不能使用 environment.ts 文件,因为配置是动态的,稍后会解释)。但我不知道如何从角度调用 spring REST 服务。

如果我使用http://localhost:80/MyRestURL,角度应用程序将尝试调用 localhost,但浏览器中的 localhost 将引用我从中启动浏览器的 PC。我需要转到运行应用程序的服务器。

现在我可以按照here 的描述从 url 中获取主机名。

let hostNameFromURL: string = this.window.location.hostname;
let correctLocalServerURL: string = "http://" + hostNameFromURL+ ":80/MyRestURL";

但是,如果我们从负载均衡器启动 Angular 应用程序,则 URL 中的名称将是负载均衡器的 URL,而不是运行 Spring Boot 应用程序和 Angular 的服务器。我可以通过负载平衡器获取配置,但如果用户已经被路由到可以工作的服务器,那么引用另一台机器(可能不稳定)似乎会适得其反)。

还有其他方法可以在 Angular 和 Spring Boot 应用程序之间共享数据吗?

【问题讨论】:

  • 你能用相对路径代替绝对路径吗?如果角度应用程序是从同一个负载均衡器提供的,那应该会给你相同的结果(即/MyRestUrl 而不是http:://someServer/MyRestUrl
  • @JoSSte 非常感谢......我的菜鸟错误。介意将其添加为答案,我会接受。
  • 你去@Chrispie

标签: angular rest spring-boot


【解决方案1】:

您可以使用相对路径而不是绝对路径。如果 Angular 应用由同一个负载均衡器提供服务,那应该会得到相同的结果。

例如:如果您的页面托管在 http://www.someserver.com/ 使用 http://www.someserver.com/MyRestUrl/MyRestUrl 作为服务的路径 将给出相同的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 2019-09-27
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 2021-10-03
    • 2019-02-19
    • 2014-07-23
    相关资源
    最近更新 更多