Graphql est un language pour les APIs créé par Facebook en 2012 et qui fournit une interface de requête et de manipulation de données entre le FrontEnd et le Backend. Graphql présente quelques avantages par rapport aux APIs REST. Dans cet article, je vais vous présenter quelques avantages offerts par Graphql et les outils disponibles pour mettre en place votre server Graphql.
Graphql Optimise les requêtes
Contrairement à l'API REST qui se focalise sur une ressource, Graphql vous permet d'envoyer une requêtes à votre serveur et de demander exactement ce que vous voulez. Pour obtenir par exemple la liste des users
dans une API REST on execute la reqête suivante:
GET /users
Si la resource user contient 20 champs, vous obtiendrez tous les 20 champs alors que votre affichage n'a peut être besoin que 3 champs (id, nom, prenom par example). Votre requête transportera une énorme quantité de données inutiles.
Avec Graphql vous obtenez ce que vous voulez. La requête sera:
users {
id,
nom,
prenom
}
Avec GraphQL vous allez optimiser vos requêtes et la réponse sera plus rapide. Ce qui peut largement améliorer la perfomance de votre application PWA, Android et Ios.
Graphql réduit le nombre de requêtes
Admettons que nous ayons une structure de données classique author, post, comment
. Si vous voulez obtenir les posts et les commentaires par exemple dans une API REST, vous allez faire plusieurs requêtes alors qu'avec Graphql vous demandez ce que vous voulez avec une seule requête.
API REST
GET /authors/1
GET /authors/1/posts
GET /posts/3/comments
avec GraphQL vous aurez
author(id: 1){
id,
posts{
title,
comments {
title,
date
}
}
}
Quelques outils Graphql
Pour commencer votre aventure dans le monde graphql, je vous remmande les outils suivamts:
- https://graphql.org/
- https://github.com/graphql/graphiql
- https://github.com/APIs-guru/graphql-voyager
- https://graphcms.com/
- https://github.com/2fd/graphdoc
- https://github.com/APIs-guru/graphql-faker
- https://github.com/redound/graphql-ide
- https://www.graph.cool/
- https://www.apollodata.com/optics/
Conclusion
J'espère qu'avec cet article, Graphql ne sera plus un nouveau mot pour vous. J'écrierai un autre article sur les différents composants (Type, Schema, Query, Mutation et Resolvers) de Graphql. A très bientôt