GraphQL: toutes les données en une seule requête

Sur le blogue de Filio Force Canada, nous continuons de parler des langages de programmation et des technologies utilisés par nos développeurs. Aujourd’hui, nous allons parler de GraphQL, un langage de requête API open source et un environnement serveur.

Histoire et caractéristiques

Ce langage a été introduit par Facebook en 2012 comme une alternative plus efficace à l’API REST. L’entreprise souhaitait réduire la charge sur ses serveurs. La solution a été GraphQL. Il a été conçu pour surmonter les limites de l’architecture REST.

GraphQL se compose de trois éléments principaux

  • Requêtes – requêtes utilisées par le client pour demander des données au serveur;
  • résolveurs – résolveurs que GraphQL utilise pour comprendre comment et d’où obtenir les données demandées;
  • Schéma – un schéma qui décrit les types de données avec lesquels GraphQL travaille et les types de données que GraphQL peut renvoyer lorsqu’il répond à une requête.

Les API GraphQL et REST utilisent toutes deux le protocole HTTP pour communiquer entre le client et le serveur. La principale différence entre les deux est que GraphQL vous permet d’obtenir toutes les données nécessaires en une seule demande, même si elles se trouvent sur des points d’extrémité (serveurs) différents. Avec l’API REST, il faudrait envoyer une demande distincte à chaque serveur.

Avantages par rapport à l’API REST:

  • Un seul lien pour toutes les demandes;
  • Une seule demande suffit pour obtenir toutes les informations dont vous avez besoin;
  • Seules les données demandées sont présentées dans la réponse. Aucune information inutile n’est transmise. Cela augmente la vitesse de traitement des demandes de réseau. Il s’agit d’une différence importante par rapport à l’API REST;
  • La réponse du serveur est définie par le corps de la requête.

Caractéristiques du langage GraphQL:

  • typage strict – vous pouvez évaluer l’exactitude d’une requête avant qu’elle ne soit exécutée.
  • Polyvalence – il peut être utilisé avec n’importe quel cadre ou langage de programmation. La source des données n’a pas d’importance.
  • Facilité de mise à l’échelle – permet d’ajouter de nouveaux types et champs sans toucher aux requêtes existantes et sans créer plusieurs versions de la même API.
Laravel programming - Filio Force it company

Interaction entre le client et le serveur

En bref, l’ordre d’interaction peut être décrit comme suit:

  1. Le client envoie une requête au serveur GraphQL pour lire ou modifier des données. Cette demande est faite selon un schéma pré-approuvé.
  2. Le serveur GraphQL reconnaît la demande grâce à des fonctions spéciales – les résolveurs – et reçoit des données sur les champs demandés.
  3. Le client reçoit une réponse contenant la structure de données demandée, généralement au format JSON.

Le client ne se préoccupe pas de savoir d’où proviennent les données demandées. Il fait la demande au serveur GraphQL dans le volume dont il a besoin. Le serveur peut travailler avec n’importe quelle source : bases de données, résultats de recherche, conteneurs Docker. Les programmeurs de développement de Filio Force utilisent souvent ce langage pour travailler sur de nouvelles tâches.

Utiliser GraphQL

GraphQL convient aux applications contenant de grandes quantités de données stockées dans différentes bases de données. Les projets qui peuvent utiliser GraphQL peuvent être écrits dans différents langages de programmation. Cependant, travailler avec GraphQL ne sera pas différent en raison de sa syntaxe universelle. Dans le cadre du développement de Filio Force, nous donnons la priorité à ce langage de programmation.

GraphQL est très populaire parmi les développeurs frontaux. Il s’agit d’une méthode moderne d’interaction entre le frontend et le backend qui réduit le nombre de requêtes au serveur et rend la réponse plus spécifique – JSON ne contient que les données nécessaires.