Passer vos api à la vitesse supérieure grâce à GraphQL

25/06/2019

Aucun commentaire

Ayant un passé de développeur Full Stack, la cohabitation entre une application front et un back-office ne m’a jamais posé de soucis. En effet maitrisant à la fois la partie front (React Js, Angular 4 , VueJs) et la partie back (Laravel, Symfony), je pouvais ajouter les api manquantes pour ensuite les exploiter immédiatement.

Mais qu’en est-il du travail en équipe ?

Prenons un cas de figure assez courant : Paul (le dev front) a dressé une liste de routes api que devra exposer Jean (le dev back). Dans un premier temps tout se passe bien, cependant pendant la phase de développement, Paul s’aperçoit que certaines fonctionnalités nécessitent un usage plus fin de l’api et qu’il devra à nouveau faire appel à Jean. Que peut-il se passer ?

  • Jean est disponible et de bonne humeur (si si des fois ça lui arrive), il met donc à jour le back pour intégrer ses évolutions
  • Jean est déjà débordé et ne peut donc pas prendre en charge la demande de Paul

C’est dans un cas comme celui-ci que GraphQL peut s’avérer très intéressant à utiliser car contrairement à Rest le dev front peut structurer son api comme bon lui semble sans faire appel au back.

GraphQL : un language de requête

GraphQL 1 est un langage de requêtes développé en interne par Facebook en 2012 jusqu’à sa publication en 20152. Il propose une alternative aux API REST1 dont le stockage est éventuellement distribué. Il propose au client de formuler la structure de données dans la requête, tandis que cette même structure est retournée par le serveur. Fortement typé, ce langage évite les problèmes de retour de données insuffisants (under-fetching) ou surnuméraires (over-fetching).

Source : Wikipédia

L’utilisation de GraphQl permet de gommer les imperfections d’une api REST à savoir :

  • succession de requêtes avant d’obtenir le résultat souhaitée
  • on ne peut atteindre que les routes définies avec le back-end
  • il n’y a pas de typage de données
  • impossibilité de segmenter la réponse

Dans le prochain article nous entrerons un peu plus de détail de GraphQL avec des exemples concrets en espérant que cela vous donne envie de l’utiliser dans l’un de vos projets 🙂