GraphQL, largement considéré comme le successeur des API REST, est un langage de requête et un environnement d’exécution côté serveur pour les API, développé par Facebook en 2012, il donne aux développeur le pouvoir de demander exactement ce dont ils ont besoin et rien de plus, facilite l’évolution des APIs au fil du temps et permet de mettre en place de puissants outils de développement 🚀.
GraphQL prend en charge toutes les opérations de lecture, l’écriture (mutation) et les mises à jour en temps réel (souvent implémentées à l’aide de WebHooks). Les développeurs peuvent utiliser plusieurs langages de programmation, notamment Haskell, JavaScript, Perl, Python, Ruby, Java, C++, C#, Scala, Go, Erlang, PHP et R.
Les requêtes GraphQL en elles-mêmes ne sont pas plus rapides que les requêtes REST, mais comme vous avez le contrôle total de ce que vous voulez avoir comme information, les requêtes GraphQL seront toujours plus petites et plus efficaces. GraphQL permet également aux développeurs de récupérer plusieurs entités en une seule requête,ce qui augmente encore l’efficacité de chaque requête.
La syntaxe pour définir une requête est la suivante :
// syntaxe 1 query nom_requete { nom_champs} // syntaxe 2 { nom_champs}
Il apparaît clairement dans l’exemple ci-dessus que le mot-clé query
est facultatif.
Une requête GraphQL ressemblerait à ceci :
{ Personne { nom } }
Nous pouvons en déduire que nous ne demandons que les noms des personnes et rien d’autre. Par conséquent, les résultats retournés seraient :
{ "data": { "Personne": [ { "nom": "Michael" }, { "nom": "George" }, { "nom": "Edwards" }, { "nom": "Rachel" } ] } }
Les requêtes GraphQL accèdent non seulement aux champs d’une seule ressource, mais également aux références entre eux. Alors que les API REST typiques nécessitent un chargement à partir de plusieurs URLs. GraphQL obtient toutes les données en une seule requête, ce qui rend les applications rapides même sur des connexions de réseau mobile lentes.
Pour visualiser cela, essayons une requête plus complexe où nous voulons voir une liste personnes avec leurs professions :
La requête que nous utiliserons pour cela est la suivante :
{ Personne { nom profession { libelle entreprise ville } } }
Les résultats de la requête :
{ "data": { "Personne": [ { "nom": "Michael", "profession ": [ { "libelle": "Ingénieur devops", "entreprise": "Microsoft", "ville": "Paris" }, ] }, { "nom": "George", "profession ": [ { "libelle": "Ingénieur QA", "entreprise": "IBM", "ville": "Paris" }, ] }, { "nom": "Edwards", "profession ": [ { "libelle": "Manager", "entreprise": "Facebook", "ville": "New York" }, ] }, { "nom": "Rachel", "profession ": [ { "libelle": "Tech lead", "entreprise": "Microsoft", "ville": "Barcelone" }, ] }, ] } }
GraphQL | REST API |
---|---|
Un langage de manipulation des données pour résoudre les problèmes courants lors de l’intégration des APIs | Une architecture largement considéré comme une norme conventionnelle pour la conception des APIs. |
architecture axée sur le client | architecture axée sur les serveurs |
Réponses aux format JSON (uniquement) | Réponses généralement en XML, JSON ou YAML. |
lle serveur détermine les ressources disponibles en permettant de demander les données nécessaires à un moment donné | la taille des ressources est définie coté serveur |
Aucune API n’est requise | Prend en charge de multiples API |
Cela dépend vraiment du besoin et des cas d’utilisations 😄. Cependant, l’avantage le plus souvent cité est que GraphQL résout les problèmes de sur/sous-recherche en permettant de ne demander que les données nécessaires. Étant donné que GraphQL est plus efficace, le développement est beaucoup plus rapide avec GraphQL qu’avec REST 👌.
Liens rapides
Politique