GraphQL Java : Guide complet de la bibliothèque pour créer des API en Java

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

GraphQL Java : Un outil puissant pour créer des API modernes



GraphQL Java est une bibliothèque serveur pour le langage Java qui permet aux développeurs de créer des API flexibles, efficaces et typées basées sur la spécification GraphQL. Contrairement aux API REST traditionnelles, GraphQL permet au client de demander uniquement les données dont il a besoin, ce qui réduit considérablement le volume d'informations transmises et accélère le fonctionnement des applications. Cette bibliothèque est l'implémentation officielle de GraphQL pour Java et est activement maintenue par la communauté.



Fonctionnalités principales et avantages de GraphQL Java



  • Sécurité des types : Le typage strict de toutes les données au niveau du schéma permet d'éviter les erreurs lors de l'exécution et simplifie le développement.
  • Flexibilité des requêtes : Les clients peuvent demander uniquement les champs nécessaires, les objets imbriqués et même effectuer plusieurs opérations dans une seule requête.
  • Point d'entrée unique : Contrairement à REST avec de nombreux endpoints, GraphQL utilise un seul endpoint pour toutes les requêtes.
  • Documentation automatique : Une documentation interactive est générée à partir du schéma (par exemple, avec GraphiQL ou Playground).
  • Prise en charge des abonnements (Subscriptions) : Possibilité de recevoir des mises à jour en temps réel via WebSocket.
  • Intégration avec l'écosystème Java : S'intègre facilement avec Spring Boot, Micronaut, Quarkus et d'autres frameworks.


Démarrage avec GraphQL Java



Pour ajouter la bibliothèque à votre projet Maven, ajoutez la dépendance suivante dans le fichier pom.xml :



<dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java</artifactId>    <version>21.3</version></dependency>


Pour Gradle, ajoutez la ligne dans build.gradle :



implementation 'com.graphql-java:graphql-java:21.3'


Création du schéma GraphQL



Le schéma est la base de toute API GraphQL. Il définit les types de données, les requêtes disponibles (Query), les mutations (Mutation) et les abonnements (Subscription). Considérons un exemple de schéma pour une bibliothèque de livres :



type Book {    id: ID!    title: String!    author: String!    year: Int}

type Query { bookById(id: ID!): Book allBooks: [Book]}

type Mutation { addBook(title: String!, author: String!, year: Int): Book}


Pour charger le schéma en Java, utilisez la classe SchemaParser :



import graphql.schema.idl.SchemaParser;import graphql.schema.idl.TypeDefinitionRegistry;

// Chargement du schéma à partir d'un fichierFile schemaFile = new File("src/main/resources/schema.graphqls");TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(schemaFile);


Implémentation des Resolvers (DataFetcher)



Les Resolvers (ou DataFetcher) sont des classes qui fournissent les données pour chaque champ du schéma. Exemple d'un resolver simple pour la requête bookById :



import graphql.schema.DataFetcher;import graphql.schema.DataFetchingEnvironment;

public class BookDataFetcher implements DataFetcher<Book> { @Override public Book get(DataFetchingEnvironment environment) { String id = environment.getArgument("id"); // Logique pour obtenir le livre depuis la base de données return bookRepository.findById(id); }}


Ensuite, liez le resolver au champ du schéma :



import graphql.schema.idl.RuntimeWiring;

RuntimeWiring wiring = RuntimeWiring.newRuntimeWiring() .type("Query", builder -> builder.dataFetcher("bookById", new BookDataFetcher())) .type("Mutation", builder -> builder.dataFetcher("addBook", new AddBookDataFetcher())) .build();


Exécution des requêtes



Après avoir configuré le schéma

Recommendations