Définition de graphql

Graphql est un langage de requête conçu pour interroger des api de manière plus précise. Au lieu de recevoir des réponses figées, le client demande exactement les données dont il a besoin, ni plus ni moins. Cette approche repose sur un point d’entrée unique et sur un schéma qui décrit clairement les données disponibles. Graphql permet ainsi de mieux contrôler les échanges entre le client et le serveur, tout en simplifiant certaines contraintes liées aux api classiques.
 

flowchart LR
A[Client Web ou Mobile] –> B[Requête GraphQL]
B –> C[Serveur GraphQL]

C –> D[Schéma GraphQL]
C –> E[Resolvers]

E –> F[Base de données]
E –> G[APIs externes]

F –> E
G –> E

D –> C

 

Concepts fondamentaux graphql

Qu’est-ce qu’un schema graphql ?

Le schema est la base de toute api graphql. Il décrit la structure des données accessibles et les opérations possibles. On peut le voir comme un contrat entre le client et le serveur. Il définit les types de données, leurs relations et les règles à respecter pour interroger l’api.

Quels sont les types graphql (object, scalar, interface, union) ?

Les types permettent de structurer les données. Un scalar correspond à une valeur simple comme un texte ou un nombre. Un object regroupe plusieurs champs. Une interface définit un ensemble de champs communs à plusieurs types. Une union permet de retourner plusieurs types différents pour une même requête. Cette organisation rend les données plus claires et plus cohérentes.

Quelle différence entre query, mutation et subscription ?

Une query sert à lire des données. Une mutation permet de modifier ou créer des données. Une subscription fonctionne en temps réel et envoie des mises à jour dès qu’un changement se produit. Ces trois mécanismes couvrent les besoins principaux d’une application moderne.

Qu’est-ce que l’introspection graphql ?

L’introspection permet d’explorer le schema directement depuis l’api. Cela signifie qu’un développeur peut découvrir les types, les champs disponibles et les relations sans documentation externe. Cette capacité rend graphql plus transparent et plus facile à utiliser.

Qu’est-ce qu’un resolver graphql ?

Un resolver est une fonction qui va chercher ou calculer les données demandées. Chaque champ d’une requête peut avoir son propre resolver. C’est lui qui fait le lien entre la requête et la source de données, qu’il s’agisse d’une base de données, d’un service externe ou d’un traitement interne.

Avantages et limites graphql

Qu’est-ce que l’over-fetching et l’under-fetching ?

L’over-fetching se produit lorsqu’une api renvoie plus de données que nécessaire. L’under-fetching oblige à faire plusieurs requêtes pour obtenir toutes les informations. Graphql évite ces deux problèmes en laissant le client choisir précisément les champs à récupérer.

Quelle différence entre graphql et rest ?

Rest repose sur plusieurs endpoints avec des réponses définies à l’avance. Graphql utilise un seul point d’entrée et des requêtes personnalisées. Avec graphql, le client décide de la structure de la réponse, alors qu’avec rest, elle est imposée par le serveur.

Qu’est-ce que le problème n+1 ?

Le problème n+1 apparaît lorsque plusieurs requêtes sont exécutées de manière répétée pour récupérer des données liées. Cela peut ralentir fortement les performances. Des solutions existent pour regrouper ces appels et limiter les accès inutiles.

Outils graphql

Qu’est-ce qu’apollo graphql ?

Apollo est un ensemble d’outils pour utiliser graphql côté client et côté serveur. Il simplifie la gestion des requêtes, du cache et des échanges de données. Il est souvent utilisé pour structurer des projets web modernes.

Qu’est-ce que relay, hasura ou prisma ?

Relay est une bibliothèque orientée performance développée pour gérer efficacement les données côté client. Hasura permet de générer rapidement une api graphql à partir d’une base de données. Prisma facilite l’accès aux données et leur manipulation côté serveur.

Qu’est-ce que graphiql ou graphql playground ?

Graphiql et Graphql Playground sont des interfaces permettant de tester des requêtes graphql. Elles offrent une visualisation du schema et facilitent l’exploration de l’api, ce qui rend le développement plus simple et plus rapide.

Fonctionnalités avancées graphql

Comment fonctionne la pagination graphql ?

La pagination permet de récupérer les données par portions plutôt que d’un seul coup. Elle peut se faire par position ou à l’aide de curseurs, ce qui offre plus de contrôle sur la navigation dans de grandes quantités de données.

Qu’est-ce qu’un fragment graphql ?

Un fragment permet de réutiliser une partie de requête. Au lieu de répéter les mêmes champs, on les définit une fois et on les réutilise. Cela rend le code plus lisible et plus facile à maintenir.

À quoi servent les directives graphql ?

Les directives permettent de modifier le comportement d’une requête. Elles servent par exemple à inclure ou exclure certains champs selon des conditions. Elles apportent plus de flexibilité dans la construction des requêtes.

Comment gérer l’authentification avec graphql ?

L’authentification se gère généralement en dehors du langage lui-même, via des mécanismes comme les tokens. Graphql utilise ensuite ces informations pour autoriser ou refuser l’accès à certaines données en fonction du contexte.

FAQ

Pourquoi utiliser graphql ?

Graphql permet de mieux contrôler les données échangées et de simplifier les interactions entre le client et le serveur.

Graphql remplace-t-il rest ?

Non, les deux approches coexistent. Graphql est utilisé dans certains cas où plus de flexibilité est nécessaire.

Graphql est-il adapté à tous les projets ?

Non, il est surtout pertinent pour des applications avec des besoins complexes en données.

Graphql est-il plus performant que rest ?

Cela dépend du contexte. Graphql peut réduire le nombre de requêtes, mais nécessite une bonne implémentation pour rester performant.