GraphQL : une nouvelle façon de penser les APIs
Qu’est-ce que GraphQL ? Ou plutôt commençons par la question : qu’est-ce que n’est pas GraphQL ? Malgré son nom, GraphQL n’est pas un langage pour les bases de données graph. C’est un langage de requête pour les APIs, créé par Facebook. Chez Eve Media, nous utilisons GraphQL pour certains projets.
Le problème avec REST
Les APIs REST exposent des endpoints fixes (/users, /posts). Chaque endpoint retourne une structure prédéfinie. Le client doit souvent faire plusieurs requêtes pour assembler les données nécessaires. Ou il reçoit trop de données (over-fetching).
L’approche GraphQL
GraphQL expose un seul endpoint. Le client envoie une query décrivant exactement les données voulues. Le serveur retourne exactement ça, rien de plus, rien de moins. Le client contrôle la forme de la réponse.
Une query GraphQL
La syntaxe est déclarative : { user(id: 1) { name, email, posts { title } } }. Cette query demande l’utilisateur 1, avec son nom, email, et les titres de ses posts. En REST, cela nécessiterait probablement 2 requêtes.
Le schema
GraphQL est fortement typé. Le schema définit les types de données disponibles, les relations, les queries et mutations possibles. Le schema est autodocumenté et sert de contrat entre client et serveur.
Mutations
Les queries lisent les données, les mutations les modifient. mutation { createUser(name: « Eve », email: « eve@example.com ») { id } }. Les mutations suivent la même syntaxe déclarative.
Avantages pour le frontend
Le frontend demande exactement ce dont il a besoin. Moins de requêtes réseau. Pas de données inutiles transférées. Les composants peuvent déclarer leurs besoins en données (avec Apollo Client, par exemple).
Avantages pour le backend
Une seule API pour tous les clients (web, mobile, partenaires). Pas de prolifération d’endpoints. Les évolutions du schema sont plus faciles à gérer. L’introspection facilite le tooling.
Inconvénients
Plus complexe que REST pour les APIs simples. Le caching HTTP classique ne fonctionne pas (tout passe en POST). Les queries complexes peuvent être coûteuses (N+1 problem). La courbe d’apprentissage existe.
Outils et écosystème
Apollo (client et serveur) est l’écosystème dominant. Hasura génère une API GraphQL depuis PostgreSQL. Prisma s’intègre bien avec GraphQL. GraphiQL et Apollo Studio offrent des IDEs pour explorer les APIs.
Quand utiliser GraphQL
Applications avec des besoins de données variés. Multiples clients avec des besoins différents. APIs complexes avec beaucoup de relations. Équipes frontend qui veulent plus d’autonomie.
Conclusion
GraphQL n’est pas un remplacement universel de REST, mais une alternative puissante pour certains cas d’usage. Évaluez vos besoins et la complexité ajoutée avant de choisir.
Chez Eve Media, nous développons des APIs REST et GraphQL. Contactez-nous pour vos besoins d’API.



