GraphQL en français

Qu'est-ce que GraphQL ?

GraphQL est un langage de requête open-source qui offre aux développeurs la possibilité de consommer, construire et créer des API d'une manière unique. Il permet d'interagir avec des API en utilisant un langage de requête, semblable à SQL pour effectuer des opérations CRUD (Créer, Lire, Mettre à jour et Supprimer) sur une base de données. Pour établir un service GraphQL, il faut définir des types qui possèdent différents champs, puis créer des fonctions pour chaque champ concernant la manière dont ils doivent être résolus. GraphQL est compatible avec plusieurs langages tels que JavaScript, TypeScript, Java, C#, Go, Python et Ruby.

Origine de GraphQL

GraphQL a été conceptualisé par Meta, anciennement Facebook, en 2012 pour résoudre des problèmes internes rencontrés par leurs applications mobiles. En 2015, il a été rendu open-source en tant qu'alternative à l'architecture REST (Representational State Transfer). Grâce à sa capacité à optimiser les transferts de données, il a considérablement réduit l'utilisation du réseau pour les applications mobiles de Meta. Depuis, il a gagné en popularité et est largement adopté par les développeurs pour la communication entre clients et serveurs.

Pourquoi adopter GraphQL ?

Pour les développeurs, il est essentiel d'avoir une bonne compréhension de l'architecture REST avant de se tourner vers GraphQL. Voici quelques avantages de GraphQL par rapport à REST :

  • Intégration facilité : GraphQL permet une intégration fluide avec des bases de données, des fichiers JSON, des APIs REST et des services cloud.
  • Ciblage des données : Le système permet aux clients de ne récupérer que les données strictement nécessaires, évitant ainsi le phénomène de sur-récupération.
  • Requêtes unifiées : Il est possible de formuler des requêtes qui extraient des données de multiples sources en un seul appel API.
  • Facilité d’adaptation : L'ajout de nouvelles données à des objets existants devient plus simple, ce qui facilite les modifications futures et diminue le risque de récupération insuffisante.

Fonctionnement de GraphQL

Le fonctionnement typique de GraphQL s'articule autour des étapes suivantes :

  1. Requête de données : Un client demande des données spécifiques à un serveur GraphQL à travers une requête.
  2. Invocation des fonctions : Une fonction côté serveur est exécutée pour récupérer ces données.
  3. Réponse : Le serveur GraphQL renvoie les données demandées par le client.

Contrairement à REST, où un ensemble unique d'arguments est transmis, GraphQL permet de fournir des arguments différents pour chaque champ et objet imbriqué. Cela transforme de manière plus efficace les données sur le serveur plutôt que sur chaque client.

Types dans GraphQL

Les types d'objet constituent les éléments de base d'un schéma GraphQL, représentant les objets pouvant être récupérés via le service ainsi que leurs champs. Par exemple :

 type Character {
   name: String!
   appearsIn: [Episode!]!
 }

Dans cet exemple, Character est un type d'objet dont name et appearsIn sont des champs. Le type String est l'un des types scalaires prédéfinis dans GraphQL. Un champ non nullable est indiqué par un point d'exclamation (!), ce qui signifie que ce champ doit toujours retourner une valeur.

Abonnements

GraphQL prend également en charge les "abonnements", permettant aux clients de recevoir des mises à jour en temps réel du serveur. Contrairement aux requêtes, qui sont ponctuelles, les abonnements maintiennent une connexion active, souvent via WebSockets, permettant au serveur d'envoyer des mises à jour au client dès que les données changent.

Gestion des Erreurs

La gestion des erreurs est intégrée dans la structure de réponse par défaut de GraphQL :

  • Les requêtes réussies renvoient une réponse JSON contenant les résultats d'une requête ou mutation dans le champ data.
  • Les requêtes échouées incluent un champ errors, listant les erreurs survenues.

Utilisateurs de GraphQL

GraphQL est adopté tant par de petites entreprises que par des géants comme Airbnb, Lyft, GitHub, Twitter, PayPal et Shopify.

Comment utiliser GraphQL dans votre projet ?

Si vous envisagez de créer un site web ou une startup, GraphQL peut jouer un rôle crucial. Par exemple, en utilisant GraphQL pour construire votre API, vous pouvez facilement interroger et manipuler des données provenant de différentes sources, consolidant ainsi vos points d'accès aux données et facilitant le développement d'applications réactives.