GraphQL API avec Java : tutoriel pratique étape par étape

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 en Java

\n\n

GraphQL est un langage de requête pour API qui permet aux clients de demander uniquement les données dont ils ont réellement besoin. Contrairement à REST, où la structure de la réponse est fixe, GraphQL permet de formater les réponses de manière flexible, ce qui réduit considérablement le volume de données transmises et accélère le développement.

\n\n

Dans ce tutoriel, nous allons voir en pratique comment créer une API GraphQL avec Java en utilisant la bibliothèque graphql-java et le framework Spring Boot. Vous apprendrez à configurer le schéma, à écrire des résolveurs et à exécuter des requêtes.

\n\n

Cet article sera utile aux développeurs Java qui souhaitent maîtriser une approche moderne de la construction d'API et améliorer l'interaction entre le client et le serveur.

\n\n

1. Configuration du projet et des dépendances

\n\n

Pour commencer, créons un nouveau projet Spring Boot. Le plus simple est d'utiliser Spring Initializr. Ajoutons les dépendances suivantes :

\n\n
    \n
  • Spring Web — pour lancer le serveur web
  • \n
  • Spring Boot DevTools — pour accélérer le développement
  • \n
  • Lombok — pour réduire le code standard
  • \n
\n\n

Après avoir créé le projet, ajoutez la bibliothèque principale GraphQL dans pom.xml :

\n\n
<dependency>\n    <groupId>com.graphql-java</groupId>\n    <artifactId>graphql-java-spring-boot-starter-webmvc</artifactId>\n    <version>2021-06-30T00-00-00-1e4b5e5</version>\n</dependency>
\n\n

Vous aurez également besoin de la bibliothèque pour utiliser l'outil GraphiQL (interface web pour tester les requêtes) :

\n\n
<dependency>\n    <groupId>com.graphql-java</groupId>\n    <artifactId>graphiql-spring-boot-starter</artifactId>\n    <version>5.0.2</version>\n</dependency>
\n\n

Après avoir ajouté les dépendances, mettez à jour le projet et lancez-le. Par défaut, GraphiQL sera accessible à l'adresse http://localhost:8080/graphiql.

\n\n

2. Création du modèle de données et du schéma GraphQL

\n\n

Pour la démonstration, créons un modèle simple Book (livre). Définissons une classe avec les champs id, title, author et pages.

\n\n
import lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class Book {\n    private String id;\n    private String title;\n    private String author;\n    private int pages;\n}
\n\n

Il faut maintenant définir le schéma GraphQL. Créez un fichier schema.graphqls dans le dossier src/main/resources :

\n\n
type Query {\n    allBooks: [Book]\n    bookById(id: String): Book\n}\n\ntype Book {\n    id: String\n    title: String\n    author: String\n    pages: Int\n}
\n\n

Le schéma décrit deux requêtes : obtenir tous les livres et obtenir un livre par son identifiant. Le type Book contient quatre champs.

\n\n

Pour traiter les requêtes, créons un service qui stockera les données en mémoire (pour simplifier) :

\n\n
import org.springframework.stereotype.Service;\nimport javax.annotation.PostConstruct;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Optional;\n\n@Service\npublic class BookService {\n    private List<Book> books = new ArrayList<>();\n\n    @PostConstruct\n    public void init() {\n        books.add(new Book("1", "Guerre et Paix", "Léon Tolstoï", 1225));\n        books.add(new Book("2", "Crime et Châtiment", "Fiodor Dostoïevski", 671));\n        books.add(new Book("3", "Le Maître et Marguerite", "Mikhaïl Boulgakov", 480));\n    }\n\n    public List<Book> getAllBooks() {\n        return books;\n    }\n\n    public Book getBookById(String id) {\n        Optional<Boo                

Blogs

Book Recommendations