如何更改生成配置的 swagger-ui 端点 (/v3/api-docs/swagger-config)

Mar*_* K. 5 java swagger swagger-ui spring-boot springdoc

我有一个创建 swagger-ui 端点的服务。我希望此端点托管在与默认路径不同的路径上(由于 Kubernetes 入口规则)。这可以通过使用 springdoc swagger 轻松实现

springdoc.swagger-ui.path=/myPath/swagger-ui/index.html
Run Code Online (Sandbox Code Playgroud)

但是它正在尝试从默认 url 访问配置

/v3/api-docs/swagger-config
Run Code Online (Sandbox Code Playgroud)

不幸的是我还需要这个网址位于特定路径上。我知道有一个设置可以指定查找 swagger-config 的路径,即:

springdoc.swagger-ui.configUrl=/myPath/v3/api-docs/swagger-config
Run Code Online (Sandbox Code Playgroud)

但这不是我要找的。此设置允许您指定不同的配置源,然后您需要在指定路径上创建资源,否则将找不到该资源。如果我理解正确,默认路径 /v3/api-docs/swagger-config 是某种端点,它会自动创建/生成资源,而不需要用户创建它。

我正在寻找的是一种在不同路径上访问此自动生成的配置的方法。会说“如果我访问 /myPath/v3/api-docs/swagger-config 而不是 /v3/api-docs/swagger-config,则生成并返回您的默认配置”。最好通过 application.properties 中的条目或覆盖应用程序代码中的某些行为

有谁知道如何实现这一点?

小智 5

尝试springdoc.api-docs.path=/myPath/v3/api-docs/swagger-config

https://springdoc.org/properties.html#properties


小智 1

我想我过去也遇到过类似的问题,它也与 Kubernetes 和代理(API 网关)有关,它位于我的应用程序前面。我需要有这样的网址https://host/api-gw/my-app/swagger-ui.html,然后重定向到https://host/api-gw/my-app/swagger-ui/index.html?configUrl=/api-gw/my-app/v3/api-docs/swagger-config. 重定向对我来说无法正常工作,因为参数/api-gw/中缺少该部分。configUrl我的问题的解决方案是将 ForwardedHeaderFilter ( https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/ForwardedHeaderFilter.html ) bean 添加到配置中。

@Configuration
public class ForwardedHeaderFilterConfig {

  @Bean
  ForwardedHeaderFilter forwardedHeaderFilter() {
    return new ForwardedHeaderFilter();
  }
}
Run Code Online (Sandbox Code Playgroud)

之后,重定向工作正常,configUrl参数设置为api-gw/my-app/v3/api-docs/swagger-config