API GraphQL avec Java : tutoriel pas à pas pour débutants

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

Introduction à l'API GraphQL avec Java

GraphQL est un langage de requête pour les API qui permet aux clients de demander uniquement les données dont ils ont réellement besoin. Contrairement à REST, où chaque point de terminaison renvoie une structure de données fixe, GraphQL offre une flexibilité et réduit le nombre de requêtes. Dans ce tutoriel, nous allons créer une API GraphQL complète en Java en utilisant Spring Boot et la bibliothèque graphql-java. Vous apprendrez à configurer le projet, définir le schéma, écrire des résolveurs et gérer les requêtes et mutations. Tous les exemples de code sont prêts à être exécutés.



1. Configuration du projet et dépendances

Commençons par créer un nouveau projet Spring Boot. Nous utiliserons Maven, mais vous pouvez adapter l'exemple pour Gradle. Ajoutez les dépendances suivantes à pom.xml :



<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency><dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java</artifactId>    <version>21.0</version></dependency><dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java-spring-boot-starter-webmvc</artifactId>    <version>2021-06-28T00-00-00-6e3b7b2</version></dependency>


Après avoir ajouté les dépendances, créez la classe principale de l'application :



@SpringBootApplicationpublic class GraphqlApplication {    public static void main(String[] args) {        SpringApplication.run(GraphqlApplication.class, args);    }}


Configurons maintenant le point d'entrée GraphQL. Créez un fichier application.yml dans le dossier resources :



graphql:  servlet:    mapping: /graphql    enabled: true    cors-enabled: true


Fait ! La structure de base du projet est opérationnelle. Ensuite, passons à la définition du schéma.



2. Définition du schéma GraphQL

Le schéma est le cœur d'une API GraphQL. Il décrit les types de données, les requêtes et les mutations. Créons un fichier schema.graphqls dans le dossier src/main/resources :



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

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

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


Nous avons défini ici :

  • Book — un objet avec les champs id, title, author et year.
  • Query — les points d'entrée pour la lecture des données (liste des livres et recherche par ID).
  • Mutation — les opérations de modification des données (ajout et suppression d'un livre).

Nous devons maintenant charger ce schéma dans l'application. Créons une classe de configuration :



import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import graphql.GraphQL;import graphql.schema.GraphQLSchema;import graphql.schema.idl.RuntimeWiring;import graphql.schema.idl.SchemaGenerator;import graphql.schema.idl.SchemaParser;import graphql.schema.idl.TypeDefinitionRegistry;

import java.io.File;import java.io.IOException;

@Configurationpublic class GraphqlConfig {

@Bean public GraphQL graphQL() throws IOException { File schemaFile = new File("src/main/resources/schema.graphqls"); TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(schemaFile); RuntimeWiring wiring = buildWiring(); GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(typeRegistry, wiring); return GraphQL.newGraphQL(schema).build(); }

private RuntimeWiring buildWiring() { return RuntimeWiring.newRuntimeWiring() .type(

Blogs

Book Recommendations