Structure du projet
Dépendances Maven Pour commencer, ajoutez les dépendences Swagger nécessaires dans votre fichier pom.xml :
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
Configuration de base Créez une classe de configuration pour activer Swagger dans votre application Spring Boot :
package com.configuration;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class ConfigurationSwagger {
// L'interface Swagger sera accessible à l'adresse /swagger-ui.html
}
Configuration avancée Pour personnaliser davantage votre documenattion Swagger, voici une configuration étendue :
package com.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
@Configuration
@EnableSwagger2
public class ConfigurationSwaggerAvancee {
// Bean principal de configuration Swagger
@Bean
public Docket docketPrincipal(Environment environnement) {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(informationsApi())
.nomGroupe("Groupe-Principal")
.selectionner()
.apis(RequestHandlerSelectors.basePackage("com.controleur"))
.construire();
}
// Deuxième bean pour créer un groupe d'API séparé
@Bean
public Docket docketSecondaire(Environment environnement) {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(informationsApi())
.nomGroupe("Groupe-Secondaire")
.selectionner()
.apis(RequestHandlerSelectors.basePackage("com.controleur"))
.construire();
}
// Configuration des métadonnées de l'API
private ApiInfo informationsApi() {
Contact contact = new Contact("NomAuteur",
"https://example.com/profil",
"contact@example.com");
return new ApiInfo(
"Documentation API - Swagger",
"Description détaillée de notre API",
"v1.0",
"https://example.com/terms",
contact,
"Licence Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList<>());
}
}
Cette configuration permet de :
- Définir plusieurs groupes d'API pour mieux ograniser la documentation
- Spécifier les packages à scanner pour les endpoints
- Personnalisre les informations affichées dans l'interface Swagger