API GraphQL avec Kotlin : 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 : Pourquoi GraphQL et Kotlin sont le duo idéal pour une API moderne

Le développement web moderne nécessite des API flexibles et performantes. REST, longtemps considéré comme la norme, conduit souvent au problème de sur-récupération (over-fetching, lorsque le serveur envoie plus de données que nécessaire) ou de sous-récupération (under-fetching, lorsque plusieurs requêtes sont nécessaires pour obtenir des informations complètes). GraphQL résout ces problèmes en permettant au client de demander uniquement les données nécessaires en une seule requête.

Kotlin, quant à lui, est un langage moderne, concis et type-safe, parfaitement adapté à la création de services backend fiables. Grâce à la bibliothèque graphql-kotlin du groupe Expedia, la création d'une API GraphQL en Kotlin devient simple et intuitive. Dans ce tutoriel, nous allons créer pas à pas une API GraphQL complète pour gérer une liste de livres.

Ce que vous allez apprendre :

  • Comment configurer un projet Spring Boot avec le support de GraphQL.
  • Comment définir un schéma GraphQL à l'aide de classes Kotlin.
  • Comment implémenter des requêtes (Queries) et des mutations (Mutations).
  • Comment tester l'API via l'IDE GraphiQL intégré.


Étape 1 : Configuration du projet et des dépendances

Pour commencer, créons un nouveau projet Spring Boot. Nous utiliserons Gradle (Kotlin DSL) – la norme pour les projets Kotlin modernes.



1.1. Création du projet

Vous pouvez utiliser Spring Initializr ou créer la structure manuellement. Nous aurons besoin des dépendances suivantes :

  • Spring Web – pour lancer le serveur HTTP.
  • Spring Boot Starter GraphQL – l'intégration principale.
  • Kotlin Reflection – pour le fonctionnement de la bibliothèque graphql-kotlin.


1.2. Fichier build.gradle.kts

plugins {    id("org.springframework.boot") version "3.2.0"    id("io.spring.dependency-management") version "1.1.4"    kotlin("jvm") version "1.9.20"    kotlin("plugin.spring") version "1.9.20"}

group = "com.example"version = "0.0.1-SNAPSHOT"

java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}

repositories { mavenCentral()}

dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-graphql") implementation("com.expediagroup:graphql-kotlin-spring-server:7.0.1") implementation("org.jetbrains.kotlin:kotlin-reflect") testImplementation("org.springframework.boot:spring-boot-starter-test")}


1.3. Configuration de application.yml

spring:  graphql:    graphiql:      enabled: true  # Active l'IDE intégré pour les tests    schema:      locations: "classpath:graphql/**/"server:  port: 8080


Étape 2 : Définition du schéma et du modèle de données

Dans GraphQL, le schéma est le contrat entre le client et le serveur. La bibliothèque graphql-kotlin permet de définir le schéma automatiquement à partir des classes Kotlin (approche code-first). Cela évite d'avoir à écrire manuellement des fichiers .graphqls.



2.1. Création du modèle de données

Créons un modèle simple Book et un repository pour stocker les données en mémoire.

package com.example.graphqlkotlin.model

data class Book( val id: String, val title: String, val author: String, val year: Int)


2.2. Repository (in-memory)

package com.example.graphqlkotlin.repository

import com.example.graphqlkotlin.model.Bookimport org.springframework.stereotype.Repositoryimport java.util.concurrent.ConcurrentHashMap

@Repositoryclass BookRepository { private val books = ConcurrentHashMap( mapOf( "1" to Book("1", "Guerre et Paix", "Léon Tolstoï", 1869), "2" to Book("2", "Crime et Châtiment", "Fiodor Dostoïevski", 1866) ) )}

Blogs

Book Recommendations