-
-
Notifications
You must be signed in to change notification settings - Fork 553
Description
Describe the bug
After update to Spring Boot to 3.4.4 version and springdoc webflux ui starter to 2.8.6 the main page Swagger UI
shows by default petstore swagger Open API.
I know that we can use to disable this behavior additional configuration:
springdoc:
swagger-ui:
disable-swagger-default-url: trueBut it doesn't work because SwaggerIndexPageTransformer ignored when I open default swagger path for webflux /webjars/swagger-ui/index.html
After some research, I found that Spring added resource handler with org.springframework.web.reactive.resource.CachingResourceTransformer for path /webjars/** in org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration.WebFluxConfig#addResourceHandlers and this is used to process when I open /webjars/swagger-ui/index.html instead SwaggerIndexPageTransformer.
The problem in org.springdoc.webflux.ui.SwaggerWebFluxConfigurer#addResourceHandlers it adds SwaggerIndexPageTransformer for path /swagger-ui and it is not used when we open /webjars/swagger-ui/index.html URL.
if (DEFAULT_WEB_JARS_PREFIX_URL.equals(webjarsPrefix)) {
swaggerUiPrefix = SWAGGER_UI_PREFIX;
resourcePath = webjarsPrefix + SWAGGER_UI_PREFIX + DEFAULT_PATH_SEPARATOR + swaggerUiConfigProperties.getVersion();
} else {
swaggerUiPrefix = webjarsPrefix;
resourcePath = DEFAULT_WEB_JARS_PREFIX_URL + DEFAULT_PATH_SEPARATOR;
}
registry.addResourceHandler(uiRootPath + swaggerUiPrefix + ALL_PATTERN)
.addResourceLocations(CLASSPATH_RESOURCE_LOCATION + resourcePath)
.resourceChain(false)
.addResolver(swaggerResourceResolver)
.addTransformer(swaggerIndexTransformer);We need to add webjarsPrefix to swaggerUiPrefix and then SwaggerIndexPageTransformer will be used for path /webjars/swagger-ui that overrides default Spring CachingResourceTransformer.
To Reproduce
Steps to reproduce the behavior:
- Create Spring boot 3.4.4 project and add
org.springdoc:springdoc-openapi-starter-webflux-ui:2.8.6deps. - Create some RestController with Dto's that used OpenAPI.
- Open swagger UI for your service, and you will see default petstroe swagger instead of your project
/v3/api-docs
Expected behavior
I expected that when I set up
springdoc:
swagger-ui:
disable-swagger-default-url: truethen springdoc will be transforming the index page and use /v3/api-docs by default instead petstore swagger