En février 2012, des développeurs de Facebook ont décidé de concevoir une application mobile pour iPhone à partir d’outils iOS natifs. Frustrés par les problèmes rencontrés avec leurs API existantes, ils ont cherché une méthode de requête et de mise à disposition de données plus efficace. C’est ainsi qu’ils ont créé GraphQL, et qu’ils l’ont lancé en production en août 2020 sur la nouvelle application Facebook pour iPhone. Ce langage de requête de données open-source dédié aux API a été diffusé au public en 2015.  

GraphQL a essentiellement été créé pour surmonter les difficultés d’accès aux données complexes via les API REST. Généralement, ces dernières ont besoin de les charger à partir de plusieurs URL. Les API GraphQL, quant à elles, vous permettent d’effectuer une requête pour plusieurs types de données exécutées sur un seul terminal. Pas besoin de gérer plusieurs appels REST pour vos requêtes de données d’objet, par exemple. Avec GraphQL, il suffit de créer une seule requête pour accéder aux mêmes informations. 

 

Un système de typage efficace

GraphQL utilise un système de typage pour décrire quelles données peuvent faire l’objet de requêtes, et est utilisé pour valider ces requêtes. Dans la mesure où le langage n’est pas lié à une base de données ou à un moteur de stockage spécifique, le client spécifie les données dont il a besoin sous forme de requête. Le serveur renvoie la réponse sous la même forme, en incluant seulement les données demandées.  

Requête GraphQL à partir d’une syntaxe de type JSON :

img

 

La réponse à cette requête GraphQL inclut seulement les données demandées, au même format :

img

 

De nombreuses applications n’ont pas de « contrat » client/serveur formalisé, contrairement à GraphQL. Les développeurs de produits accèdent aux serveurs via plusieurs terminaux et rédigent du code personnalisé pour récupérer les données dont ils ont besoin. Les serveurs définissent des procédures et renvoient les données. Bien que simple, cette approche est de moins en moins efficace à mesure que l’application gagne en complexité, que le système vieillit, ou les deux.

Avec une API REST, par exemple, lorsque des informations issues d’un terminal donné sont nécessaires, la requête ne peut être rédigée de manière à limiter les champs renvoyés par l’API. La réponse fournit un ensemble de données complet. En d’autres termes, on récupère trop de données. Par contraste, le langage de requête de données open-source GraphQL utilise une syntaxe qui vous permet d’adapter vos demandes de manière à obtenir seulement les informations nécessaires, depuis des champs spécifiques de chaque entité, pour plusieurs objets.

GraphQL exploite un schéma prédéfini qui décrit les requêtes autorisées et les types de données récupérables. Cette approche facilite le développement d’applications sans nécessité d’émettre des suppositions sur les types de champs. Parmi les autres avantages de GraphQL, on peut citer les suivants :

  • Les projets qui nécessitaient plusieurs semaines sont achevés en quelques heures.

  • Les requêtes renvoient des résultats prévisibles.

  • Les applications sont rapides et stables, car le serveur ne contrôle pas les données.

  • Le risque de récupérer trop ou pas assez de données est éliminé.

  • Le réseau et la mémoire sont moins sollicités. Grâce à l’automatisation, les économies s’accumulent.

  • Les développeurs de produits peuvent rédiger une requête pour obtenir précisément les données dont ils ont besoin, sous une forme déclarative et hiérarchique, plus similaire à la manière dont ils réfléchissent et travaillent.

 

GraphQL chez Rubrik

En mars 2017, notre équipe de développement a créé notre premier service GraphQL : l’interface utilisateur Rubrik Cloud Data Management (CDM). Peu de temps après avoir mis à l’épreuve ce concept initial, nous avons choisi GraphQL comme architecture d’API primaire pour Polaris, notre plateforme SaaS. Il offre aux utilisateurs d’importants atouts en termes d’efficacité, de performance et d’agilité.

Bien que GraphQL soit une alternative très intéressante aux API REST, il ne peut pas les remplacer sur tous les plans. Dans certains cas, les API REST pourraient toujours se révéler préférables.

Pour en savoir plus sur le langage de requête de données open-source GraphQL, consultez notre introduction à GraphQL et Rubrik.