Imaginez-vous dans une bibliothèque. Vous avez une liste précise d’informations que vous souhaitez obtenir, mais vous ne voulez pas parcourir tous les livres ni lire les chapitres entiers.
C’est là qu’intervient GraphQL, qui va fonctionner comme un "assistant personnel" et vous fournir uniquement les informations dont vous avez besoin, et rien de plus.
Mais alors, qu’est-ce que GraphQL, et pourquoi est-il aussi puissant ?
Découvrons-le ensemble dans ce petit article !
Un langage de requête issu des besoins modernes
GraphQL a vu le jour en 2012, lorsqu'il a été développé en interne chez Facebook.
À l'époque, le réseau social cherchait un moyen d’améliorer la performance de ses applications mobiles, confrontées à une quantité de données toujours plus massive et complexe. Les limitations des APIs REST, qui renvoyaient souvent des données excessives ou insuffisantes, posaient un défi.
GraphQL a été conçu pour permettre aux développeurs de récupérer exactement les informations requises, rien de plus, et tout cela en une seule requête.
En 2015, Facebook a publié GraphQL en open source, en réponse à une forte demande des développeurs du monde entier. Depuis, il a gagné en popularité, notamment dans les applications à grande échelle, comme Shopify, GitHub ou Twitter, où la précision et la performance des échanges de données sont cruciales.
Un système de requête flexible et précis
Avec GraphQL, le client envoie une requête unique, construite pour obtenir les données spécifiques nécessaires en une seule fois, sans surplus d’informations :
Cette requête retourne uniquement les informations demandées, ce qui limite la surcharge des réseaux et améliore la performance des applications.
Décomposition de la requête
- user(id: "1") :
- Cette partie de la requête demande les informations pour un utilisateur spécifique, identifié ici par
id: "1"
. - GraphQL accepte un paramètre (ici
id: "1"
) qui permet de filtrer les données pour obtenir seulement l'utilisateur ayant cet identifiant.
- Cette partie de la requête demande les informations pour un utilisateur spécifique, identifié ici par
- name :
- Ce champ demande le nom de l'utilisateur.
- Il est placé directement sous
user
, ce qui indique que l'on souhaite récupérer cette information spécifique pour cet utilisateur uniquement.
- posts :
- Ce champ demande les publications (ou "posts") de cet utilisateur.
posts
est un champ lié àuser
, indiquant que nous voulons obtenir les publications de cet utilisateur particulier (id: "1").- Ce champ inclut les sous-champs détaillés plus loin dans la requête
- title et content :
- Ces sous-champs spécifient que, pour chaque publication de l'utilisateur, nous souhaitons obtenir uniquement le titre (
title
) et le contenu (content
). - Cela permet d'éviter de récupérer d'autres informations sur les publications qui ne sont pas nécessaires ici.
- Ces sous-champs spécifient que, pour chaque publication de l'utilisateur, nous souhaitons obtenir uniquement le titre (
Résultat attendu
Si on considère que l'utilisateur ayant id: "1"
s'appelle "Alice" et a deux publications, la réponse de cette requête pourrait ressembler à ceci :
Pourquoi choisir GraphQL aujourd’hui ?
GraphQL s’est rapidement imposé pour répondre aux besoins des applications modernes, caractérisées par des interfaces riches en données et une complexité croissante :
- Optimisation des requêtes : Les clients récupèrent uniquement les données nécessaires, ce qui améliore la performance.
- Flexibilité : Le client contrôle ce qu’il reçoit, réduisant le besoin de créer de multiples endpoints.
- Schémas forts et documentation intégrée : GraphQL fonctionne avec des schémas, validant les requêtes et rendant les APIs faciles à explorer.
GraphQL est ainsi devenu un standard incontournable pour les applications modernes et constitue une alternative puissante aux APIs REST dans des environnements aux besoins de données complexes et variés.