J'ai configuré un projet Spring Boot comprenant Spring Data Rest et 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>
Voici ma configuration Swagger:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
Extrait de application.properties:
spring.data.rest.base-path=/api
server.context-path=/myapp
Lorsque j'exécute le serveur, tous les points de terminaison de repos sont correctement mappés et accessibles à /myapp/api/...
, y compris un RestController personnalisé que j'ai créé moi-même.
Pourtant:
à http://localhost:8080/myapp/api
Je peux voir la liste des API Spring Data Rest (au format Json) mais je ne peux pas voir mes points de terminaison RestController personnalisés.
à http://localhost:8080/myapp/swagger-ui.html
Je vois un gui Nice qui répertorie uniquement mon RestController personnalisé et le point de terminaison d'erreur, pas les API Spring Data Rest. En fait, http: // localhost: 8080/myapp/v2/api-docs ne fait aucune référence aux points de terminaison Spring Data Rest, mais uniquement à mon RestController personnalisé et au point de terminaison d'erreur.
Comment puis-je corriger ma configuration Spring Data Rest & Swagger?
Prise en charge de Spring Data Rest a été introduit uniquement dans la version Springfox 2.6.0. Si vous suivez les instructions après la mise à niveau vers la dernière version de springfox (2.6.1 au moment d'écrire ces lignes), vous ne devriez pas avoir de problème avec le rendu des points de terminaison.
Mettre à niveau vers la dernière version de 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>
Importez également des annotations de repos de données de ressort dans la classe Configuration/Application de ressort.
@Import(SpringDataRestConfiguration.class)
Avez-vous importé la configuration de springfox-data-rest? Comme l'a dit Dilip Krishnan, j'ai suivi les instructions et importé la configuration, en ajoutant cette annotation à ma classe d'application principale:
@Import({springfox.documentation.spring.data.rest.configuration.SpringDataRestConfiguration.class})
J'espère que cela aide!