如何确定向远程 Spring Boot 服务器发送请求的 URL?

Posted

技术标签:

【中文标题】如何确定向远程 Spring Boot 服务器发送请求的 URL?【英文标题】:How to determine the URL to send requests to for a remote Springboot server? 【发布时间】:2021-12-18 17:38:52 【问题描述】:

我已经成功部署了一个Springboot服务器到AWS Elastic Beanstalk,可以通过浏览器的URL访问。

我希望能够从 Postman 向它发送请求。我想我可以使用此代码打印我将从 Postman 发送请求的 URL:

    @Override
    public void run(ApplicationArguments args) throws Exception 
        try 
            String s1 = InetAddress.getLoopbackAddress().getHostAddress();
            String hostedAt = s1 + ":" + environment.getProperty("local.server.port");
            logger.info("**The server is hosted at: ", hostedAt);
         catch (Exception e) 
            e.printStackTrace();
        
    

但是,即使部署到 AWS,它也会打印 **The server is hosted at 127.0.0.1:8080。很明显,本地主机不是我应该发送请求的地方,那么在哪里呢?

使用我的浏览器,如果我导航到应用程序的 URL,那么我会得到 Whitelabel error page 证明它有效。这是网址:http://spara.us-east-1.elasticbeanstalk.com/

我是新手,所以它可能有些愚蠢,但任何指导都会有所帮助。谢谢!

【问题讨论】:

【参考方案1】:

您现在拥有的是应用程序的公开 URL,即:

http://spara.us-east-1.elasticbeanstalk.com/

您似乎没有为您的应用设置基本 URL/上下文路径。默认上下文路径(如果未设置)为空。这意味着,您应该能够使用 Postman 访问上面的 URL。

但是,如果您确实需要在 application.properties 中为您的 Spring Boot 应用程序设置基本 URL,您可以将其添加到上面的 URL 并通过邮递员访问。

对于 Spring 启动 2.x:

server.servlet.context-path=/your-base-url

Spring Boot 1.2+ (

spring.data.rest.basePath=/your-base-url

【讨论】:

【参考方案2】:

ServletUriComponentsBuilder。 fromRequestUri(HttpServletRequest

如果您谈论的是 Spring Boot 基本 URL,应该可以工作

【讨论】:

我可以在我拥有的 run() 函数中使用它吗?我想查看我的服务器启动时的值

以上是关于如何确定向远程 Spring Boot 服务器发送请求的 URL?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 框架中发送 HTTP 请求?

如何在Spring-boot中向控制器发送一个单元的id

Spring Boot - 等待 Web 服务器启动

Jsp 视图页面在 Spring Boot 中不呈现。如何解决?

Spring Boot+STOMP解决消息乱序问题

控制器从 Thymeleaf 发送空对象 - Spring Boot