Qu'est ce que GraphQL

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:

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