web-dev-qa-db-fra.com

Swagger ne détecte pas les API Spring Data Rest avec Spring Boot

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?

15
Manu

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.

5
Dilip Krishnan

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)
7
jzqa

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!

3
alonso_50