如何配置springdoc ui不映射根路径?



我正在尝试在spring web应用程序(非springboot)中配置springdoc-openapi-ui。在我的应用程序中,我有一个映射到"/"它与Springdoc的SwaggerUiHome控制器冲突。我得到一个类似这样的错误:

. lang。IllegalStateException:歧义映射。无法映射'swaggerUiHome'方法'org.springdoc.webmvc.ui.SwaggerUiHome#index()到{GET[/]}:已经映射了'loginLogoutController' bean方法com.company.MyController#method()。

如果我禁用映射到'/'的控制器,那么swagger UI就会像预期的那样出现。然而,我需要我的控制器运行,以便我的web应用程序的工作。即使我设置springdoc。swagger-ui。使用-root-path=false'(这应该是默认值),它仍然会导致模棱两可的映射错误。

有别的办法吗?有什么方法可以禁用默认映射的SwaggerUiHome.index()到'/'?

只有当您定义:springdoc.swagger-ui.use-root-path=true

时才会调用SwaggerUiHome禁用:springdoc.swagger-ui.use-root-path=false

请注意,swagger-ui的默认路径不是根路径,而是:http://server:port/context-path/swagger-ui.html

如果使用常规的spring框架(不使用spring-boot),我会得到这个错误。深挖源/springdoc-openapi-starter-webmvc-ui-2.0.2.jar/org.springdoc.webmvc.ui/SwaggerConfig.class

@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(name = SPRINGDOC_USE_ROOT_PATH, havingValue = "true")
@Lazy(false)
SwaggerUiHome swaggerUiHome() {
return new SwaggerUiHome();
}

发现String SPRINGDOC_USE_ROOT_PATH = "springdoc.swagger-ui.use-root-path"。我猜可能有一个bug,这个属性不工作的springdoc.swagger-ui.use-root-path=false

这是我阅读https://www.baeldung.com/spring-requestmapping#4-ambiguous-mapping-error后的工作解决方案

@GetMapping(value = "/", produces = MediaType.TEXT_HTML_VALUE)
public String index() {
return "home";
}

相关内容

  • 没有找到相关文章

最新更新