Dans cette section, nous allons donner vie à notre schéma GraphQL en créant les entités Java correspondantes. Nous mettrons en place des contrôleurs adaptés pour gérer les requêtes et mutations via les annotations de Spring for GraphQL.
Jour 3 : construction des entités et des contrôleurs
L’heure est venue de bâtir les fondations de notre API GraphQL avec Spring Boot. Ce jour, nous allons forger nos entités Java, qui se dresseront fièrement en miroir des types définis dans notre schéma. Nous érigerons ensuite nos contrôleurs, équipés des annotations puissantes que Spring for GraphQL met à notre disposition.
Retour au schéma
Souvenez-vous du schéma que nous avons déterré précédemment :
Notre cap aujourd’hui, c’est de donner vie aux éléments de notre schéma, dans lequel nous avons défini les types Author et Article, accompagnés de requêtes et de mutations :
2 types : Author et Article
4 requêtes de lecture (Queries)
2 requêtes de création (Mutations)
Nous disposons de deux options pour organiser nos contrôleurs : soit un contrôleur pour chaque entité (ArticleController et AuthorController), soit un contrôleur unique pour chaque type de requête (QueryController et MutationController). Pour garder une architecture familière, j’ai opté pour la première option, reflétant ainsi la structure REST que nous connaissons bien.
Nos entités Java
Voici nos classes d’entité, fidèles reflets de notre schéma.
Article
Author
Ainsi, nous forgeons notre modèle de données en lui donnant forme et substance, sans complexité inutile.
Les controllers
AuthorController
ArticleController
Explications des annotations
Notre levier principal dans cette opération repose sur des annotations clé :
@Controller : Cette annotation marque notre classe pour que Spring la détecte en tant que composant dédié à la gestion des requêtes et mutations GraphQL. Le point d’entrée pour nos requêtes sera /graphql.
@QueryMapping : Cette annotation signale une méthode comme représentant une requête GraphQL, connectant directement les méthodes Java à celles spécifiées dans notre schéma (ex : getAuthors, getArticles).
@MutationMapping : Cette annotation désigne une méthode pour une mutation GraphQL, nous permettant de lier les mutations Java avec celles du schéma GraphQL (createAuthor, createArticle).
Nota Bene : les services et les repositories se construisent comme avec une API REST, sans particularité liée à GraphQL.
Ainsi s’achève notre avancée du jour. L'ossature de notre API GraphQL est en place, et demain, nous soumettrons ces éléments à l'épreuve des terribles tests unitaires afin de garantir que tout fonctionne comme prévu.
Précédemment
Prochainement
Tout le code relatif à cet article est disponible ici :