Adopter GraphQL : Un changement de paradigme dans le développement d'API

December 27, 2023

Technology

Avez-vous entendu parler de GraphQL ? Ce langage de requête d'API, initialement développé par Facebook (aujourd'hui Meta), a évolué pour devenir un écosystème florissant. Explorez cet article pour comprendre pourquoi adopter ce nouveau paradigme d'API est essentiel.

L'ingénierie logicielle complexe pose de nouveaux défis

Schéma d'API

Lors de la gestion des API REST traditionnelles, des outils comme OpenAPI ou Postman sont généralement utilisés pour gérer les schémas d'API. Cette approche, indépendante de l'API elle-même, repose entièrement sur les connaissances et l'expertise du développeur pour décider de fournir ou non ces fichiers descriptifs et comment le faire correctement.

Dans le processus de génération des schémas d'API, les développeurs rencontrent souvent des chaînes d'outils complexes et des résultats sujets à des erreurs, ce qui peut être frustrant. Fournir une définition complète, incluant les modèles de données, les descriptions d'API, la documentation et les exemples, n'est pas une tâche facile. L'affichage d'OpenAPI nécessite des efforts supplémentaires, comme l'utilisation de Swagger UI.

Protocoles d'API

Bien que le modèle de requête-réponse de HTTP fonctionne bien pour interroger ou soumettre des données dans les API REST traditionnelles, la gestion de données fréquemment changeantes nécessite des considérations comme le long polling ou WebSocket. Bien que ces méthodes soient viables, il n'existe actuellement aucun mécanisme prêt à l'emploi qui équilibre de manière transparente l'efficacité et le contrôle des coûts entre ces deux modes.

Défis dans les scénarios complexes

Dans le passé, les développeurs devaient simplement fournir une page web basée sur l'API pour que les utilisateurs accèdent directement aux données via HTML dans les navigateurs. Avec l'avènement de l'ère mobile, les développeurs doivent désormais proposer des applications natives pour les plateformes Android et iOS. Ces applications répondent à différents groupes d'utilisateurs et à leurs habitudes, chacun ayant des densités d'information variées. Fournir un support pour toutes les plateformes via une seule API devient difficile, car chaque plateforme a des besoins uniques en termes de données et d'interaction, nécessitant des API spécifiques. Du côté serveur, les développeurs font également face à des sources de données en expansion, comme les bases de données relationnelles ou les caches Redis. Gérer correctement la persistance des données et la mise en cache tout en fournissant des requêtes pour les clients est un défi majeur.

Défis rencontrés par l'API REST

GraphQL : Renforcer le développement d'API

GraphQL aborde efficacement ces complexités. Il fournit un schéma d'API unifié, permettant l'écriture de modèles de données et de descriptions d'interfaces d'API via des approches Schema-first ou Code-first, assurant ainsi la cohérence et la justesse dans la mise en œuvre et la définition de l'API. GraphQL prend en charge les capacités natives d'abonnement aux changements de données, permettant des mises à jour de données en temps réel via des canaux WebSocket.

S'appuyant sur les fondations de HTTP et de l'encodage JSON, le trafic de requêtes de GraphQL est très adapté aux proxys. Il offre également la possibilité de requêter et d'agréger des données à la demande, permettant aux appelants de différentes plateformes d'utiliser la même API GraphQL et d'obtenir les données nécessaires, évitant ainsi la nécessité de récupérer toutes les données de force. De plus, GraphQL dispose d'un écosystème riche et de diverses extensions, comme les spécifications GraphQL Relay, la fédération GraphQL et les outils GraphiQL.

GraphQL

Conclusion

En résumé, GraphQL représente une approche plus avancée que REST, simplifiant le flux de travail complexe de la définition d'API et rendant le développement d'API plus flexible. D'un point de vue ingénierie, l'augmentation des outils d'automatisation simplifie le travail répétitif de code de modèle, permettant aux développeurs de se concentrer davantage sur l'application elle-même.

Contrairement aux API REST, GraphQL permet aux développeurs d'améliorer progressivement leurs API sans que les utilisateurs ne s'en rendent compte, que ce soit en ajoutant de nouvelles API ou des champs. Il n'est pas nécessaire de versionner, perturbant ainsi les utilisateurs dépendant des versions antérieures de l'API. De nombreuses plateformes proposent désormais des API GraphQL, y compris l'API GraphQL de Meta utilisée dans son application mobile, ainsi que GitHub et Shopify qui fournissent directement des API GraphQL pour que les développeurs puissent les utiliser.

Tags: