RESSOURCES

Qu'est-ce que GraphQL ?

GraphQL est un mode de communication avec les API créé comme une alternative à REST.

01Un nouveau langage de requête

GraphQL est un langage d'interrogation pour les API qui a été développé par Facebook et sa communauté de dev. Il a été présenté pour la première fois en juin 2018, et est maintenant une technologie mature qui a gagné une large reconnaissance du marché. Par conséquent, il est bien reconnu et de nombreuses entreprises choisissent de le mettre en œuvre. Pour vous dire en quoi elle est différente, nous devons nous pencher sur ce qui est encore le plus utilisé : REST et ce sur quoi il est basé. GraphQL est souvent appelé le successeur de REST car il résout ses principaux problèmes. Comme vous le savez probablement, il est basé sur une sorte d'ancienne conception de système. Selon celle-ci, chaque modèle de données est disponible à une adresse distincte. En ayant une boutique en ligne avec des vêtements, par exemple, nous pouvons avoir les adresses de base de données suivantes :

  • /cart
  • /entrepôt
  • /produits
  • /découvrir
  • et bien d'autres encore...
Langage de requête GraphQL

02Obtenez seulement ce que vous vouliez

En fait, le nombre de ces adresses ne sera jamais faible, au contraire, il augmentera avec le système. Gardez à l'esprit que pour presque chaque adresse, vous devez créer un ensemble d'appels pour traiter les demandes get, post, put ou delete. Il en résultera un grand nombre d'adresses à gérer et une quantité encore plus grande d'appels nécessaires pour obtenir les données. GraphQL fonctionne d'une manière complètement différente. Nous n'avons qu'une seule adresse, une seule source de vérité, à laquelle nous pouvons demander des données. Ce que nous obtenons dépend uniquement de nous et de la façon dont nous construisons la requête.

Requête GraphQL

03Requêtes flexibles

La principale caractéristique de GraphQL est la possibilité d'effectuer des requêtes flexibles dans lesquelles nous définissons exactement les données de l'API que nous voulons obtenir. En outre, le langage offre la possibilité de créer des requêtes imbriquées, ce qui lui confère un avantage encore plus grand sur les API REST dans ces domaines.

Requête GraphQL

04Plate-forme agnostique

Un point de similitude entre REST et GraphQL est l'indépendance de la plate-forme ou du langage de programmation. Une autre caractéristique commune est l'idempotence des mêmes opérations. Pour l'architecture REST comme pour GraphQL, des opérations telles que récupérer, modifier ou supprimer peuvent être utilisées à plusieurs reprises sans que le résultat ne change.

REST vs GraphQL

05Éléments de base

Les éléments de base de GraphQL sont : la mutation :

  • Query : une opération de récupération de base dans GraphQL qui nous permet d'obtenir des données. La différence essentielle est que nous obtenons exactement les données que nous avons demandées en structurant la requête pour obtenir uniquement ce que nous voulons.
  • mutation : une opération de base de manipulation de données en GraphQL qui nous permet de créer, modifier ou supprimer des données
  • schéma : la base de tout projet GraphQL, il décrit la logique et les fonctionnalités, est écrit en SDL (Schema Definition Language) et ses principaux composants sont les types et les champs résolveur : la fonction utilisée pour connecter votre schéma GraphQL au backend, il transforme les opérations en données et peut retourner des chaînes, des entiers, des null et d'autres primitives
  • resolver : resolver : la fonction utilisée pour connecter votre schéma GraphQL au backend, elle transforme les opérations en données et peut retourner des chaînes, des entiers, des null et d'autres primitives.
Mutation GraphQL

06Langage de définition des schémas

GraphQL utilise sa propre syntaxe : SDL ou Schema Definition Language. Il est utilisé pour spécifier le schéma d'une API et ses types et champs. Les types sont déclarés à l'aide du mot-clé type et les champs sont ajoutés entre parenthèses pour chaque type d'objet.

Schéma GraphQL

07Une communauté en pleine croissance

Si GraphQL n'est pas encore aussi populaire que REST, sa communauté est en pleine expansion. Il a déjà eu un certain nombre d'adopteurs majeurs tels que GitHub, Netflix, PayPal ou Shopify. Ce n'est qu'une question de temps avant que d'autres ne suivent.

Communauté GraphQL

GraphQL

  • Hiérarchie : Les API REST utilisent des identificateurs de ressources uniformes ou URI pour adresser les ressources. Cela signifie que tout suit une approche hiérarchique simple, ce qui est bien pour les petits projets mais peut causer beaucoup de problèmes pour les projets plus grands ou plus complexes.
  • Multiples allers-retours : En raison de la structure hiérarchique, une API REST comporte généralement un certain nombre de points de terminaison et, à son tour, le client a besoin de plusieurs appels pour obtenir toutes les données nécessaires.
  • Sur- et sous-recherche : la structure hiérarchique et l'absence de requêtes flexibles signifient que les API REST récupèrent généralement trop de données inutiles ou nécessitent plusieurs appels pour obtenir toutes les données nécessaires. Cela a évidemment un impact sur la bande passante et les performances et est généralement aggravé par la taille de l'application.

REST

  • Pas de récupération excessive ou insuffisante : GraphQL utilise des requêtes flexibles, voire imbriquées, qui vous assurent d'obtenir exactement et uniquement ce dont vous avez besoin. Pas d'appels multiples nécessaires et pas de données reçues en trop, tout peut être traité par une seule requête spécifiquement construite.
  • Point de terminaison uniqueDe même, vous n'avez besoin que d'un seul point de terminaison. La structure de la requête se chargera d'obtenir ce dont vous avez besoin, la façon dont vous avez organisé les données n'a pas d'importance, tant que vous construisez correctement la requête, elle obtiendra tout ce dont vous avez besoin, même à partir d'un désordre complet.
  • Sécurité de typeLes schémas GraphQL utilisent un système de type fort, ce qui signifie que toutes les API exposées au client sont écrites dans le langage de définition des schémas, ce qui élimine les incohérences de données et facilite la recherche d'erreurs.
LeftCircle

Pourquoi utiliser GraphQL ?

Pour les performances, l'avantage de GraphQL est évident puisqu'il ne nécessite qu'un seul point de terminaison pour fournir toutes les ressources. Évidemment, les requêtes peuvent devenir assez complexes en fonction des données dont vous avez besoin. Cela dit, il est toujours plus facile de gérer une seule requête complexe que d'avoir un grand nombre de points de terminaison et d'avoir besoin d'un nombre encore plus grand de requêtes simples pour obtenir toutes les données dont vous avez besoin. Pour toute application complexe avec microservices, GraphQL est tout simplement meilleur que REST. Pour une application simple, l'utilisation de REST est toujours possible, mais si cette application prend de l'ampleur, elle sera confrontée aux mêmes problèmes que ceux mentionnés ci-dessus et sa restructuration pour les éviter sera très difficile.

Demander une démo

Faites une démonstration personnalisée en direct et découvrez pourquoi GraphQL Editor est le bon choix pour dire adieu au manuel !