0

我正在使用 swagger 运行一个 sprinboot 应用程序。我只是按照教程进行操作,原则上只需在我的 pom.xml 中包含 springdoc 即可在本地工作。

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.5.5</version>
    <!--<version>1.2.32</version>-->                                                                                                                                                                                 
</dependency>

我还更改了 application.properties 文件中的默认 swagger ui 路径

springdoc.swagger-ui.path=/harri-api.html

没有做进一步的配置。

我将我的应用程序部署在服务器上(在端口 7879 上运行),在该服务器上,swagger ui 可通过其域 -harri.de/harri-api.html 使用。但是当我想使用我的 REST-API 本身时,swagger 不使用域名harri.de,而是使用服务器 ip 和端口。

也许有人可以给我一个提示,在哪里以及如何配置 swagger ui 的行为。我只想大摇大摆地使用域名而不是 ip:port

非常感谢 Harri E.

4

2 回答 2

1

只需在 Nginx 上启用主机名:

location /openapi/ {
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_pass http://localhost:8081/openapi/;
}

于 2021-09-20T02:10:29.387 回答
0

我设法为我的问题实施了一个可接受的解决方案。我在主类中添加了 OpenAPI 配置作为注释。更具体地说,我定义了两个在 swagger ui 编辑器中可选择的服务器。

@OpenAPIDefinition(servers = {@Server(url = "http://127.0.0.1:7879"), @Server(url = "https://harri.de/")})
@SpringBootApplication
public class HarriApplication {

    public static void main(String[] args) {
        SpringApplication.run(HarriApplication.class, args);
    }
    ...
}

这两个服务器现在在 swagger ui 的顶部下拉列表中可用。

评论

该解决方案对我有用,但有基本的缺点。配置是在我的源代码中硬编码完成的。这不是很灵活。在不同的主机上部署时,这种方法需要重建应用程序。

我还尝试提供一个 yaml 配置文件来添加服务器条目。但这种方法没有奏效。引用 yaml 配置文件,例如:

servers: 
  - url: https://harri.de
  - url: http://127.0.0.1:7879

禁止从源代码生成我的 API 规范。它的行为不像生成规范的扩展。

于 2021-03-16T11:08:20.477 回答