Ce tutoriel montre comment générer automatiquement un client REST (un client Feign Spring Cloud) à partir d'une spécification OpenAPI (anciennement Swagger). Cette approche est extrêmement utile dans une architecture de microservices pour garantir que les clients d'API sont toujours synchronisés avec les fournisseurs d'API.
Ce tutoriel est composé de deux applications Spring Boot :
-
BookApplication: Agit comme le fournisseur de l'API. Il expose des endpoints pour gérer des livres. La spécification de son API est définie dans un fichier OpenAPI (books.json). -
AuthorApplication: Agit comme le consommateur de l'API. Il a besoin d'appeler l'API deBookApplication. Au lieu d'écrire un client manuellement, il utilise le pluginopenapi-generator-maven-pluginpour générer un client Feign basé sur le fichierbooks.jsondeBookApplication.
- Le
pom.xmldu moduleAuthorApplicationcontient la configuration duopenapi-generator-maven-plugin. - Pendant la phase de
generate-sourcesde Maven, ce plugin lit le fichiersrc/main/resources/swagger/books.json. - Il génère ensuite une série d'interfaces et de modèles de données dans le répertoire
target/generated-sources/openapi/src/gen/main/java. - Ces classes générées constituent un client Feign entièrement fonctionnel que
AuthorApplicationpeut injecter et utiliser pour communiquer avecBookApplicationde manière typée et sécurisée.
-
Construire le projet: À la racine de ce module (
client-generation-tutorial), exécutez la commande Maven suivante. Cela déclenchera la génération du code client.mvn clean install
-
Lancer
BookApplication(le fournisseur d'API): Naviguez dans le dossierBookApplicationet lancez l'application.cd BookApplication mvn spring-boot:run -
Lancer
AuthorApplication(le consommateur d'API): Dans un autre terminal, naviguez dans le dossierAuthorApplicationet lancez l'application.cd AuthorApplication mvn spring-boot:run -
Tester l'intégration: Vous pouvez maintenant appeler les endpoints de
AuthorApplication, qui à son tour appelleraBookApplicationen utilisant le client Feign généré.
Par défaut, AuthorApplication utilise le client OpenFeign généré. Pour basculer sur HttpExchange (Spring Framework), changez la propriété suivante :
books.client=http-exchangeLes deux clients pointent vers la même URL (paramétrable) :
bookManagement.url=http://localhost:8092Cela vous permet de comparer directement les comportements sans changer le code métier.