Retour aux articles
  • 23.02.2021

Les avantages et les inconvénients de GraphQL

Les avantages et les inconvénients de GraphQL

Qu'est-ce que l'API GraphQL ?

GraphQL est un langage open-source de requête et de manipulation de données développé et publié par Facebook en 2012. 

Développé par Facebook pour les aider à reconstruire leurs applications mobiles natives et parce qu'ils avaient besoin d'une API d'extraction de données suffisamment puissante mais suffisamment simple pour être facile à apprendre et à utiliser. 

GraphQL a depuis été rendu open source en 2015 et est maintenant régi par la Fondation GraphQL afin de garantir que son développement se fera de manière ouverte et neutre.

Bien que GraphQL ait été initialement développé spécifiquement pour les applications mobiles, son utilisation s'est depuis étendue à tous les types de développement comme alternative à l'utilisation des API REST. Il donne le pouvoir de définir et de structurer les données nécessaires, ce qui réduit considérablement le nombre d'appels d'API et garantit que les données renvoyées sont structurées et ne contiennent que les informations demandées.

GraphQL assure qu’une plateforme récupère exactement ce qui est nécessaire sur le serveur. 

La base de GraphQL

Pour comprendre et utiliser GraphQL, il est important de se pencher sur deux éléments : Schéma et requêtes.

GraphQL : Schéma

Le système de schémas typés utilisé dans GraphQL est ce qui rend tout ce qu'il fait possible. Le langage d'interrogation GraphQL consiste à sélectionner des champs sur les objets qu’on souhaite interroger. Et pour qu'il fonctionne avec n'importe quel framework et langage de programmation, il doit avoir ses propres règles pour le traitement des requêtes et les données qui peuvent être renvoyées. 

Quand on travaille avec des requêtes GraphQL, on remarque qu'une requête correspond étroitement au résultat et qu'il devient assez facile de prévoir ce que la requête retournera.

Pour que tout reste structuré, le service GraphQL qui traite les requêtes aura un ensemble fixe de types qui décrivent l'ensemble des données possibles qui sont disponibles pour la requête. De cette façon, chaque fois qu’une requête est effectuée, elle sera validée par rapport à ce schéma et ne sera exécutée que si elle est valide.

Bien que les données interrogées dépendent du service GraphQL utilisé, elles seront toujours prévisibles et suivront cette structure d'objets et de champs.

GraphQL : Requêtes

Les requêtes, c'est ce dont il s'agit avec GraphQL. Il s'agit essentiellement de demander à son service de renvoyer des champs spécifiques sur les objets sélectionnés. 

Ceci est essentiel pour GraphQL, car il offre deux avantages :

  • On obtient toujours le résultat qu’on attend :  il aide à prévoir les données reçues ainsi que la structure. Cela simplifie le traitement des données que le serveur renvoie et de les faire consommer par l'application à laquelle on envoie les données.
  • Le serveur sait exactement quelles données on veut voir : en ayant une structure claire des objets et des champs possibles qui peuvent être interrogés, le serveur saura toujours ce qu'il est censé renvoyer. Et s'il y a une erreur dans la requête, elle ne sera pas validée et l'utilisateur sera invité à envoyer un message d'erreur descriptif qui permettra un dépannage rapide.

Avantages et inconvénients de GraphQL

Bien que GraphQL présente des avantages évidents par rapport aux requêtes traditionnelles de l'API REST, il n'est pas toujours nécessaire, tout dépend du projet. 

Avantages de l'utilisation de GraphQL :

Tout en une seule demande

Le contrôle total de la définition et de la structuration de chaque requête et à la nature hiérarchique de GraphQL, assure l’obtention exacte du contenu voulu en un aller-retour. 

Le maintien d'un volume de transfert de données plus faible signifie également une connexion plus rapide et de meilleurs temps de chargement pour les utilisateurs. 

Message d'erreur GraphQL

GraphQL est fortement typé et crée ainsi un message d'erreur descriptif dans le backend lorsque quelque chose ne va pas. 

Liberté de création - sans limite de langue

GraphQL peut être utilisé dans n'importe quel langage (tant qu'il peut effectuer des requêtes HTTP). 

Les développeurs front-end n'ont pas besoin d'attendre que la partie back-end soit terminée. De plus, il est possible de personnaliser ses requêtes pour récupérer exactement le contenu dont on a besoin pour le rendu.

GraphQL est introspectif

GraphQL permet d'obtenir une liste des types de données qu'il prend en charge, ce qui crée une plateforme puissante et intuitive. De plus, la documentation devient beaucoup plus rapide car en l'utilisant pour générer automatiquement la documentation.

Les inconvénients de GraphQL

Complexité pour les développeurs de serveurs

Avec GraphQL, les requêtes plus complexes signifient plus de travail de traitement pour le serveur. Les développeurs de serveurs devront en faire plus et que la configuration du serveur sera plus complexe.

Une grande partie de ce problème peut être résolue par l'utilisation de services gérés, mais cela ajoutera encore des pièces mobiles supplémentaires à la configuration du serveur qui doivent être gérées dans une certaine mesure.

Plus de travail pour gérer et maintenir l'API

Avec l'API GraphQL, il ajoute également un travail supplémentaire de gestion et de maintenance. Et selon la façon dont elle est mise en œuvre, elle peut également nécessiter différentes stratégies de gestion de l'API.

Dans de nombreux cas, les avantages de l'utilisation de GraphQL compenseront le travail supplémentaire requis.

GraphQL n'exige pas l'apprentissage d'un nouveau langage ou framework de programmation, ce qui signifie que les développeurs n'ont pas besoin d'acquérir de nouvelles compétences. 

GraphQL est très intuitif et, avec sa nature introspective et ses messages d'erreur fortement typés, une grande partie de l'apprentissage se fera simplement en l'utilisant.