I setup a Spring Boot project including Spring Data Rest and Swagger:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
This is my Swagger configuration:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
Excerpt from application.properties:
spring.data.rest.base-path=/api
server.context-path=/myapp
When I run the server, all rest endpoints are correctly mapped and reachable to /myapp/api/...
, including a custom RestController I created on my own.
However:
at http://localhost:8080/myapp/api
I can see the list of Spring
Data Rest APIs (in Json format) but cannot see my custom RestController endpoints.
at http://localhost:8080/myapp/swagger-ui.html
I see a nice gui which only lists my custom RestController and the error endpoint, not the Spring Data Rest APIs. In fact, http://localhost:8080/myapp/v2/api-docs does not make any reference to Spring Data Rest endpoints, but only to my custom RestController and to the error endpoint.
How can I fix my Spring Data Rest & Swagger configuration?
To enable the Swagger2 in Spring Boot application, you need to add the following dependencies in our build configurations file. For Gradle users, add the following dependencies in your build. gradle file. Now, add the @EnableSwagger2 annotation in your main Spring Boot application.
The Swagger API interface in the AppDynamics Platform is deprecated starting version 4.5. 15.
Upgrade to latest version of swagger
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-data-rest</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
Additionally import spring data rest annotation on spring Configuration/Application class.
@Import(SpringDataRestConfiguration.class)
Spring Data Rest support was only introduced in springfox version 2.6.0. If you follow the instructions after upgrading to the latest version of springfox (2.6.1 at the time of this writing) you shouldn't have a problem with rendering the endpoints.
Did you import the configuration from springfox-data-rest? As Dilip Krishnan said, I followed the instructions and imported the configuration, adding this annotation to my Main Application class:
@Import({springfox.documentation.spring.data.rest.configuration.SpringDataRestConfiguration.class})
Hope it helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With