Qu’est ce que GraphQL ?

Redallica
4 min readNov 13, 2020
Introduction à GraphQL

Comment est apparu de GraphQL

GraphQL est un langage de requêtes open source créé par Facebook. Avant que GraphQL ne devienne open source en 2015, Facebook l’utilisait en interne pour ses applications mobiles depuis 2012 comme alternative à l’architecture REST. En conséquence, l’utilisation du réseau a été considérablement réduite pour les applications mobiles de Facebook, car GraphQL permettait un transferts de données plus efficace.

Supposons que vous souhaitiez récupérer des données à partir de l’API Rest et que vous disiez: “Salut API REST, donne-moi les titres des cours disponibles dans la rubrique ‘Formation’ ”. Cela fonctionne, avec un point de terminaison ou une URL spécifique (dans notre cas, Formation) que vous atteignez et que cette URL détermine quelles données doivent être remontées. Avec l’API REST, vous récupérez une URL et cette URL renvoie généralement un JSON ou un objet Javascript rempli de données. Il en résulte soit des données indésirables que nous devons filtrer pour récupérer nos données requises, soit plusieurs demandes pour répondre à différentes requêtes. Pas très efficace, vous en convenez …

Comment GraphQL est différent ?

Au lieu d’une API où vous accédez à une URL et acceptez les données qui vous reviennent, GraphQL vous permet de demander des données spécifiques, donnant aux clients plus de contrôle sur les informations envoyées.

GraphQL est comme un restaurant qui vous permet de créer votre plat en choisissant vous même vos ingrédients, sans qu’on vous impose quoique ce soit dans votre assiette.

Dans l’architecture RESTful, le backend définit les données disponibles pour chaque ressource sur chaque URL, tandis que le front-end doit toujours demander toutes les informations d’une ressource, même si une partie seulement est nécessaire.

Dans le pire des cas, une application cliente doit lire plusieurs ressources via plusieurs requêtes réseau. C’est ce qu’on appelle la surexploration . Un langage de requête comme GraphQL côté serveur et côté client permet au client de décider des données dont il a besoin en effectuant une seule requête au serveur.

GraphQL est un langage de requêtes, c’est un moyen d’obtenir des données d’une API vers votre application. Au départ, Facebook a ouvert la spécification GraphQL et son implémentation de référence en JavaScript. Maintenant, avec Javascript, plusieurs bibliothèques ont été incorporées dans l’implémentation. L’écosystème autour de GraphQL se développe horizontalement en proposant plusieurs langages de programmation, mais aussi verticalement, avec des bibliothèques GraphQL comme Apollo et Relay.

Requêtes et mutations

Actuellement, les opérations GraphQL peuvent être divisées en deux grandes catégories, une requête (lecture) et une mutation (écriture). Chacune de ces opérations est uniquement une chaîne qui doit être construite conformément à la spécification du langage de requêtes GraphQL.

Les requêtes sont utilisées pour la récupération des données et les mutations sont utilisées pour modifier les données côté serveur. Dans l’exemple ci-dessous, vous verrez qu’une requête a exactement la même forme que le résultat. Cette fonctionnalité essentielle de GraphQL vous fournit toujours les résultats attendus car elle permet au serveur de savoir exactement ce que le client demande.

Une requête simple en GraphQL

Une fois que cette opération GraphQL atteint l’application principale, elle peut être interprétée par rapport à l’ensemble du schéma GraphQL et résolue avec des données pour l’application front-end.

Requêtes relationnelles

Avec GraphQL, nous pouvons faire des requêtes relationnelles de plusieurs champs ce qui nous permet d’obtenir toutes les données requises en une seule demande (requête), contrairement à l’architecture REST dans laquelle nous aurions besoin de faire plusieurs requêtes (une pour chaque champ).

Requêtes relationnelles en GraphQL et REST API

Dans l’exemple ci-dessous, une requête demande plusieurs ressources ( auteur , article ) qui sont appelées champs dans GraphQL. On demande également un ensemble particulier de champs imbriqués ( nom , urlSlug ) pour l’ article de champ , même si l’entité elle-même offre plus de données dans son schéma GraphQL (par exemple description , releaseData pour l’article). Une architecture RESTful aurait besoin d’au moins deux requêtes en cascade pour récupérer l’entité auteur et ses articles, mais la requête GraphQL l’a fait en une seule requête. De plus, la requête a uniquement sélectionné et envoyé les champs nécessaires au lieu de ramener l’entité entière.

Exemple de requête relationnelle en GraphQL

Et voilà … GraphQL expliqué brievement

--

--