Qu'est-ce que GraphQL ?
GraphQL est un langage de requête pour API et un environnement d'exécution créé par Facebook en 2012, rendu open-source en 2015. Contrairement à REST, GraphQL permet aux clients de demander exactement les données dont ils ont besoin.
Toutes les requêtes passent par une seule URL, contrairement aux multiples endpoints REST.
Cas d'usage adaptés :
- Applications mobiles avec contraintes de bande passante
- Interfaces complexes nécessitant des données variées
- APIs publiques servant divers clients aux besoins différents
- Agrégation de données provenant de multiples sources
Principes fondamentaux
Langage de requête déclaratif
Le client spécifie la structure exacte des données qu'il souhaite recevoir.
{
user(id: "123") {
name
email
posts {
title
comments {
content
}
}
}
}Schéma fortement typé
Tout est défini par un système de types qui sert de contrat entre client et serveur.
type User {
id: ID!
name: String!
email: String
posts: [Post!]
}
type Post {
id: ID!
title: String!
content: String!
comments: [Comment!]
}Architecture GraphQL
L'architecture GraphQL repose sur trois concepts clés :
- Schéma : Définit les types de données et les opérations possibles
- Resolvers : Fonctions qui déterminent comment obtenir les données pour chaque champ
- Moteur d'exécution : Analyse les requêtes et orchestre l'exécution des resolvers
Le flux de traitement d'une requête GraphQL :
- Le client envoie une requête au serveur
- Le serveur valide la requête contre le schéma
- Pour chaque champ demandé, le resolver correspondant est appelé
- Les données sont assemblées selon la structure demandée
- Le serveur renvoie une réponse JSON correspondant exactement à la requête
Cette architecture offre flexibilité et efficacité tout en maintenant une séparation claire des responsabilités.