Depuis le début du web, le développement d’API est une tâche difficile pour les développeurs. La façon dont nous développons nos API doit évoluer avec le temps afin que nous puissions toujours construire de bonnes API, intuitives et bien conçues.

Au cours des dernières années, GraphQL a gagné en popularité parmi les développeurs. De nombreuses entreprises ont commencé à adopter cette technologie pour construire leurs API. GraphQL est un langage de requête développé par Facebook en 2012 et rendu public en 2015. Il a gagné en popularité et il a été adopté par de nombreuses grandes entreprises telles que Spotify, Facebook, GitHub, NYTimes, Netflix, Walmart, etc.

Dans cette série de tutoriels, nous allons examiner GraphQL, comprendre ce que c’est, et voir quelles sont les caractéristiques qui rendent ce langage de requête si intuitif et facile à utiliser.

Commençons par examiner les problèmes posés par REST et la façon dont GraphQL les résout. Nous découvrirons également pourquoi les entreprises construisent leurs API avec GraphQL et pourquoi ce langage représente l’avenir des API.

L’historique de REST

graphql

Il y a longtemps, lorsque nous avons modifié la conception de nos API, passant de SOAP à REST, nous pensions que cette évolution donnerait aux développeurs plus de souplesse dans leur travail. Nous ne pouvons pas nier que cela a bien fonctionné pendant un certain temps et que c’était une bonne décision à l’époque. Les applications et le web devenant de plus en plus sophistiqués, les API ont naturellement évolué elles aussi, suivant ces changements.

Cependant, REST présente de nombreux problèmes. Voyons quels sont ces problèmes :

Un grand nombre de points de terminaison

Chaque ressource dans REST est représentée par un point de terminaison. Ainsi, dans une application réelle, nous finirions par avoir un grand nombre de points de terminaison pour un grand nombre de ressources. Si vous voulez faire une requête GET, vous aurez besoin d’un point de terminaison spécifique à cette requête, avec des paramètres spécifiques. Si vous voulez faire une requête POST, vous aurez besoin d’un autre point d’accès uniquement pour cette requête.

Mais quel est le problème ? Imaginons que nous construisions une énorme application de médias sociaux comme Facebook. Nous nous retrouverons avec un grand nombre de points de terminaison, ce qui signifie que les développeurs devront consacrer plus de temps au développement et à la maintenance de ces API.

La recherche excessive et insuffisante d’informations

Un vrai problème qui agace beaucoup de développeurs est la sur- et sous-recherche d’informations via les API REST. Cela est dû au fait que les API REST renvoient toujours une structure fixe. Nous ne pouvons pas obtenir exactement les données que nous voulons à moins de créer un point de terminaison spécifique pour cela.

Ainsi, si nous n’avons besoin que d’un petit morceau de données, nous devons travailler avec l’objet entier. Par exemple, si nous n’avons besoin que du prénom, du nom et de l’âge d’un utilisateur dans une API REST, il est impossible d’obtenir exactement ces données sans récupérer l’objet entier.

Il existe également un problème de sous-recherche d’informations. Si nous voulons obtenir des données de deux ressources différentes, nous devons faire des appels différents à deux points de terminaison différents. Dans une application de grande envergure, cette solution n’est pas très efficace, car dans certains cas, nous n’avons besoin que d’un élément de données spécifique, et non de l’objet entier. Imaginons maintenant que nous construisions une application qui aura 100 points de terminaison. Imaginez la quantité de travail et de code que nous devons écrire. Cela deviendra de plus en plus difficile avec le temps. Le code devient également difficile à maintenir, et les développeurs se sentent perdus dans ce processus.

Quelques mots sur le Versioning

L’un des points douloureux de REST, à notre avis, est le versionnage. Avec les API REST, il est très courant de voir beaucoup d’API avec v1 ou v2. En GraphQL, ce n’est pas nécessaire puisque vous pouvez faire évoluer vos API en ajoutant de nouveaux types ou en supprimant les anciens.

En GraphQL, tout ce que vous devez faire pour évoluer votre API est d’écrire du nouveau code. Vous pouvez écrire de nouveaux types, requêtes et mutations sans avoir à expédier une autre version de votre API.

Ainsi, vous ne verrez pas d’API GraphQL avec des points de terminaison comme ceux qui suivent :

https://example.com/api/v1/users/12312

https://example.com/api/v2/users/12312

Pourquoi GraphQL est l’avenir ?

En 2012, Facebook a rencontré un problème lors du développement de ses applications mobiles, ce qui l’a conduit à créer GraphQL. Ces problèmes sont très courants, surtout lorsque nous parlons de la conception d’API RESTful. Comme discuté, ces problèmes sont :

  • Mauvaises performances
  • Beaucoup de points de terminaison
  • Sur- ou sous-recherche de données
  • Envoi d’une nouvelle version à chaque fois que nous devons inclure ou supprimer quelque chose
  • Difficulté à comprendre les API

En tenant compte de ces concepts, les développeurs de Facebook ont mis au point une meilleure façon de concevoir les API, qu’ils ont ensuite baptisée GraphQL. En fait, il s’agit du remplacement de REST, avec de nombreuses améliorations.

Avec GraphQL, nous obtenons un grand nombre de nouvelles fonctionnalités qui vous donnent des superpouvoirs lorsque vous construisez vos API. Examinons-les une par une :

Le point de terminaison unique

Il n’est pas nécessaire de construire un grand nombre de points de terminaison ! Avec GraphQL, nous en n’avons qu’un seul, et avec cela, nous pouvons obtenir autant de données que nous le souhaitons en une seule requête. En fait, GraphQL regroupe toutes vos requêtes, mutations et abonnements dans un seul point de terminaison et le met à votre disposition. Cela améliore votre cycle de développement car vous n’avez pas besoin de faire deux requêtes pour obtenir des données de deux ressources différentes. De plus, imaginez que nous construisions une énorme application, nous n’aurons pas beaucoup de points de terminaison et une tonne de code comme avec REST. Nous n’aurons qu’un seul point de terminaison, et avec celui-ci, nous pourrons faire autant de requêtes que nous le souhaitons.

De plus, comme nous l’avons vu plus haut, une approche « endpoint-only » rend votre API auto-documentée puisque vous n’avez pas besoin de créer de la documentation, vos développeurs savent déjà comment l’utiliser. Ils peuvent comprendre l’API simplement en regardant le code, ou en regardant le terrain de jeu.. Cela semble magique, mais c’est juste GraphQL !

Avec GraphQL, vous ne récupérez que les données dont vous avez besoin.

Plus de sur- ou sous-recherche d’informations. Vous ne récupérez que les données dont vous avez besoin. Vous vous souvenez des problèmes de performances médiocres que nous avions évoqués au départ ? Ce n’est plus le cas, puisque GraphQL améliore les performances de votre API, notamment en cas de connexion réseau lente.

Avec GraphQL, il est facile de commencer à construire des API et d’être cohérent

Beaucoup de gens pensent que GraphQL est assez compliqué car il implique un schéma et un seul point de terminaison. Une fois que vous commencez à développer des API avec ce langage, vous découvrez que c’est plus facile que vous ne le pensiez. Une API « à point de terminaison unique » est très utile lorsque vous développez votre site Web ou votre application. Elle rend votre API davantage auto-documentée, et vous n’avez pas besoin d’écrire beaucoup de documentation à son sujet.

Si vous n’utilisez pas JavaScript comme langage principal, ce n’est pas un problème. GraphQL est un langage de requête agnostique, ce qui signifie que vous pouvez l’utiliser avec n’importe quel langage. Au moment de la rédaction de cet article, GraphQL prend en charge plus de 12 langues.

GraphQL est l’avenir

graphql-avenir

Le fait que GraphQL soit un langage de requête open source signifie que la communauté peut y contribuer et l’améliorer. Lorsque Facebook l’a mis à la disposition de tout le monde, il a suscité beaucoup d’intérêt et d’approbation de la part des développeurs. Aujourd’hui, GraphQL connaît une croissance rapide, car de plus en plus de développeurs commencent à créer des API avec ce langage. Cependant, certaines personnes se demandent si cette technologie va réellement remplacer REST ou devenir la nouvelle façon de créer des API pour les applications du monde réel.

Au début, nous pensions que GraphQL n’était qu’un battage publicitaire et une autre façon de créer des API. Cependant, lorsque nous commençons à l’étudier de plus près, nous découvrons qu’elle possède les caractéristiques essentielles requises pour créer des API modernes pour des applications, car elle s’intègre parfaitement aux plateformes.

Donc, si nous pouvons vous dire quelque chose maintenant, c’est : oui, GraphQL est vraiment l’avenir des API. C’est pourquoi les grandes entreprises misent dessus.

En novembre 2018, GraphQL a créé une fondation GraphQL, en partenariat avec la Fondation Linux. Ce langage de requête encourage ses développeurs à construire davantage de documentation, d’outils et de support pour le langage. Cette fondation permettra d’assurer un avenir stable, neutre et durable à GraphQL. Voilà donc une raison supplémentaire de considérer GraphQL comme l’avenir des API.

Bien sûr, elle ne remplacera pas REST immédiatement car de nombreuses applications l’utilisent encore et il est impossible de les réécrire du jour au lendemain. Au fur et à mesure que les entreprises adopteront GraphQL, l’UX et le DX s’amélioreront.

Le mot de la fin

GraphQL est vraiment l’avenir des API, et nous devons en apprendre davantage à son sujet. Au fil du temps, elle se développe et devient une solution incontournable pour les développeurs modernes. Une grande partie des entreprises utilisent déjà cette API et ce n’est pas étonnant lorsque l’on connaît ses grands avantages.

Avez-vous besoin d’aide pour construire votre API ? Partagez-nous vos besoins, notre équipe est là pour vous épauler !

Tous
Business
Jamstack
NodeJS
React Native
Développement Web & Mobile
Flutter
Mobile
Python
Strapi
Wordpress
UX/UI Design
Headless
Process business
Outils

Articles de la même catégorie

Refonte de site internet : améliorer son tunnel de conversion

5 conseils pour augmenter son taux de conversion lors de la refonte de votre site internet

Découvrez nos 5 conseils pratiques à appliquer lors de la refonte de votre site web pour augmenter votre taux de conversion !...
Express JS

Express JS : tout ce que vous devez savoir

Découvrez Express JS, le framework basé sur Node.js pour construire des backend puissants....
Angular vs React : que choisir ?

Angular vs React : que choisir pour votre entreprise ?

Vous hésitez entre Angular vs React pour développer votre site web d'entreprise ? Découvrez notre comparatif !...