Intégration de Swagger dans un projet Spring Boot

  1. Ajout des dépendances

Pour commencer, incluez les bibliothèques Swagger dans votre fichier de configuration Maven.


<!-- Dépendance pour Swagger Core -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<!-- Dépendance pour l'interface utilisateur Swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

  1. Configuration de Swagger

Créez une classe de configuration dédiée pour initialiser Swagger avec des paramètres personnalisés.


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.builders.ApiInfoBuilder;

@Configuration
@EnableSwagger2
public class SwaggerSetup {

    @Bean
    public Docket apiDocumentation() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(getApiDetails())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.controllers"))
                .paths(PathSelectors.ant("/api/**"))
                .build();
    }

    private ApiInfo getApiDetails() {
        return new ApiInfoBuilder()
                .title("Documentation de l'API")
                .description("Guide technique pour l'API REST")
                .version("2.0")
                .build();
    }
}

  1. Gestion des intercepteurs

Si votre application utilise des intercepteurs, configurez-les pour exclure les chemins Swagger.


import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.Arrays;

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new AuthInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns(Arrays.asList(
                        "/swagger-resources/**",
                        "/swagger-ui/**",
                        "/v2/api-docs/**"
                ));
    }
}

  1. Vérification de l'intégration

Redémarrez l'application et accédez à l'URL suivante dans un navigateur : http://localhost:8080/swagger-ui.html.

  1. Utilisation des annotations Swagger

Pour documenter les contrôleurs et méthodes API, utilisez les annotations appropriées.


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

@RestController
@Api(tags = "Gestion des données")
public class DataController {

    @GetMapping("/api/data")
    @ApiOperation(value = "Récupère les informations de base")
    public String fetchData() {
        return "Exemple de données";
    }
}

Pour exclure des points d'accès de la documantation, appliquez l'annotation @ApiIgnore.


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import io.swagger.annotations.ApiIgnore;

@GetMapping("/api/debug")
@ApiIgnore
public void debugEndpoint(@RequestParam String param1) {
    // Logique de débogage
}

Étiquettes: Spring Boot Swagger API Documentation RESTful APIs Java

Publié le 3 juin à 00h34