GraphQL
Comment fonctionne GraphQL
GraphQL repose sur un schéma typé qui décrit l'ensemble des données disponibles et leurs relations. Le client envoie une requête à un point d'accès unique (souvent /graphql) en décrivant la forme exacte de la réponse attendue ; le serveur renvoie un JSON correspondant champ pour champ.
Trois types d'opérations structurent les échanges :
- Query : lecture de données, sans effet de bord.
- Mutation : création, modification ou suppression de données.
- Subscription : flux temps réel, le serveur poussant les mises à jour au client.
Le schéma sert aussi de contrat et de documentation : il valide les requêtes en amont et permet aux outils d'introspecter automatiquement l'API. Cela rend l'API auto-descriptive, un atout pour les équipes front et back qui travaillent en parallèle.
GraphQL face à REST
REST expose plusieurs points d'accès, un par ressource, et renvoie une structure de réponse fixe. GraphQL expose un point d'accès unique et laisse le client composer sa réponse. Les deux approches sont valides : le choix dépend de la complexité des données et des besoins clients.
| Critère | GraphQL | REST |
|---|---|---|
| Points d'accès | Un seul (endpoint unique) | Multiples, un par ressource |
| Sélection des données | Le client choisit les champs | Structure de réponse fixe |
| Over/under-fetching | Évité par construction | Fréquent, nécessite des appels multiples |
| Typage / contrat | Schéma typé fort, introspection native | Variable, dépend d'OpenAPI/Swagger |
| Mise en cache HTTP | Complexe (POST, endpoint unique) | Native via verbes et URL (GET) |
| Courbe d'apprentissage | Plus élevée au démarrage | Plus simple, largement répandue |
GraphQL brille quand des clients hétérogènes (web, mobile) consomment des données aux besoins différents, ou quand les relations entre entités sont profondes. REST reste pertinent pour des API simples, fortement orientées cache ou aux ressources bien délimitées.
Quand l'adopter en projet métier
Pour une plateforme métier, un ERP ou une application multi-clients, GraphQL réduit le nombre d'appels réseau et donne au front la maîtrise de ses besoins sans dépendre d'évolutions côté serveur. Il évite la multiplication d'endpoints spécifiques à chaque écran.
Quelques points de vigilance avant d'adopter GraphQL :
- Mise en cache : moins immédiate qu'avec REST, elle se gère côté applicatif ou via des couches dédiées.
- Requêtes coûteuses : une requête trop profonde peut surcharger le serveur ; prévoir une limitation de complexité.
- Sécurité et autorisations : à appliquer finement au niveau des champs, pas seulement de l'endpoint.
- Maturité de l'équipe : l'outillage et la conception du schéma demandent une montée en compétence initiale.
En pratique, le choix se décide selon la complexité des données, le nombre de clients à servir et les contraintes de performance, pas par effet de mode.
Questions fréquentes
Vos clients mobiles ont des besoins de données variés ? GraphQL peut être la bonne réponse.
Voir nos logiciels sur mesureDéfinitions liées