Suddenly Springfox Swagger 3.0 is not working with spring webflux
Application was working with Springfox Swagger 3.0 few days back. Suddenly it is stopped working. The Jar file which was created before a week is still working but now when we try to build a new Jar file, which is not working, even without any code/library changes. I have even referred the below URL but still facing issue.
404 error with swagger-ui and spring webflux
Below given my configuration:
POM file:
<properties>
<java.version>1.8</java.version>
<springfox.version>3.0.0-SNAPSHOT</springfox.version>
<spring.version>2.3.1.RELEASE</spring.version>
</properties>
<repositories>
<repository>
<id>spring-libs-milestone</id>
<name>Spring Milestone Maven Repository</name>
<url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-spring-webflux</artifactId>
<version>${springfox.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox.version}</version>
</dependency>
</dependencies>
Config Files:
@Configuration
@EnableSwagger2WebFlux
public class SwaggerConfiguration implements WebFluxConfigurer {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder()
.description("My Reactive API")
.title("My Domain object API")
.version("1.0.0")
.build())
.enable(true)
.select()
.apis(RequestHandlerSelectors.basePackage("com.reactive.controller"))
.paths(PathSelectors.any())
.build();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/swagger-ui.html**")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
I am getting 404 error when I try to open the swagger page.
http://localhost:8080/swagger-ui.html
Can someone help me with this. Thanks in advance.
Solution 1:
The implementation has changed recently (see migrating from earlier snapshots for a brief update on this).
Now the UI is avaiable under /swagger-ui
endpoint (not /swagger-ui.html
).
You should also drop the @EnableSwagger2WebFlux
annotation and addResourceHandlers()
method, remove all springfox dependencies and add just one:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${springfox.version}</version>
</dependency>
Solution 2:
Getting Started with Swagger-3 in Springboot Rest API
For new projects
For Maven:-
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
For Gradle:-
implementation "io.springfox:springfox-boot-starter:<version>"
Now there is no extra configuration to activate swagger
on the spring-boot project like the previous. if try to configure with security, there is some configuration. plz refer to this article.
In swagger version 3 remove the @EnableSwagger2
annotation base config also.
And most of the user tries to find HTML swagger document file using {host}/swagger-ui.html
or {host}/swagger-ui
those are now removed.
use {host}/swagger-ui/
to see the HTML document
This is a sample project link on GitHub
Refer to documentation io.springfox
Solution 3:
This is how it worked for me. I am using InteliJ IDEA, SpringBoot and Maven.
When adding Swagger dependencies as:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
They were colored in red and I could not add them at all. I tried reloading my project, generate sources and update folders, but I just couldn't install it.
Then I added this dependency as well:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
And it worked just fine. Also, I find my conclusion to the problem here:
Baeldung
So in the end I had this in my pom.xml file:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
To see Swagger UI in your browser using Swagger 3.0 is
http://localhost:8080/swagger-ui/index.html
Hope it helps to someone :)
Solution 4:
Ok, after reading everything and after trying most, got my swagger-ui on /swagger-ui/index.html#
https://github.com/springfox/springfox-demos/tree/master/boot-swagger