Ces dernières années, vous avez souvent vu un langage appelé GraphQL. Alors, qu'est-ce que GraphQL ? Quels sont les scénarios d'utilisation ? Ce tutoriel vous présentera les bases de GraphQL, donc si vous voulez en savoir plus sur GraphQL, ne le manquez pas.
Qu'est-ce que GraphQL
GraphQL est un langage de requête et un moteur d'exécution côté serveur pour les API. Il fournit une spécification complète pour les requêtes API, permettant aux serveurs de ne renvoyer que les données nécessaires sans redondance. Contrairement aux API RESTful, les requêtes GraphQL nécessitent moins de requêtes et offrent aux développeurs plus de certitude quant aux résultats renvoyés
Scénarios d'utilisation de GraphQL
Les développeurs veulent travailler plus rapidement et plus efficacement, et le système de types de GraphQL leur permet de spécifier les champs de données précis dont ils ont besoin du serveur pour correspondre au modèle de données de leur application. GraphQL continue de devenir de plus en plus populaire, notamment :
- Conception d'API avec des structures de données complexes : La conception d'API avec des structures de données complexes en couches peut être difficile pour les API RESTful. Cependant, GraphQL facilite la conception d'API avec des structures de données complexes, car la structure de données requise du client peut être définie clairement.
- Développement d'applications mobiles et d'applications monopages (SPA) : Les applications mobiles et les SPA doivent souvent récupérer des données à partir de plusieurs points de terminaison d'API. Cependant, avec GraphQL, vous pouvez obtenir les données requises à partir d'un seul point de terminaison d'API, ce qui réduit le trafic réseau et améliore les performances.
- Séparation front-end et back-end : GraphQL permet la séparation front-end et back-end, permettant aux deux équipes de se développer indépendamment. Cela accélère le processus de développement et améliore la productivité de l'équipe.
- Requêtes personnalisées et authentification : GraphQL vous permet de personnaliser les données dont les clients ont besoin. GraphQL fournit également des fonctionnalités d'authentification et d'autorisation flexibles, ce qui le rend adapté aux applications qui nécessitent une sécurité élevée.
Dans l'ensemble, GraphQL est utile dans diverses situations, telles que la conception d'API avec des structures de données complexes, le développement d'applications mobiles et de SPA hautes performances, et la séparation front-end et back-end.
L'histoire de GraphQL
GraphQL a été créé par Facebook en 2012 en tant que projet interne pour améliorer la récupération et la manipulation des données pour leurs applications mobiles.
En 2015, Facebook a publié GraphQL au public, ce qui a conduit à une adoption généralisée parmi les grandes entreprises technologiques comme GitHub et Twitter. Ses capacités de requête de données déclaratives et flexibles en ont rapidement fait une partie essentielle de l'écosystème de développement moderne.
En 2018, la GraphQL Foundation a été créée pour soutenir son développement ouvert et sa gouvernance axée sur la communauté, consolidant ainsi sa position d'outil puissant pour la création d'API efficaces. Aujourd'hui, GraphQL continue de prospérer et de révolutionner la façon dont les développeurs conçoivent et interagissent avec les API.
Spécification GraphQL : Schéma, champs, requête et paramètres
Le schéma GraphQL définit les types, les requêtes, les mutations et les champs d'abonnement disponibles dans l'API GraphQL. Voici la définition des termes de base :
- Types d'objets : Utilisés pour définir les champs des objets dans le modèle de données. Par exemple, un objet utilisateur a des champs tels que le nom et l'e-mail.
- Champs : Définissent les types de données que le serveur GraphQL peut récupérer lors de l'exécution d'une requête. Les champs appartiennent généralement à des types d'objets, mais sont parfois définis comme des types scalaires. Les types scalaires incluent les chaînes, les entiers, les nombres à virgule flottante, les valeurs booléennes, les ID, etc.
- Requête : Définit le point d'entrée des requêtes dans l'API GraphQL. Les requêtes sont utilisées pour récupérer des données du serveur GraphQL.
- Mutation : Définit le point d'entrée des mutations dans l'API GraphQL. Les mutations sont utilisées pour modifier les données sur le serveur GraphQL.
- Abonnement : Définit le point d'entrée pour s'abonner à l'API GraphQL. Les abonnements sont utilisés pour recevoir des mises à jour de données en temps réel du serveur GraphQL.
Schémas
Un modèle de données est utilisé pour définir la structure de données des entités d'objets et les relations entre elles. Par exemple, il spécifie quels attributs un objet possède. Le diagramme suivant représente un modèle de données complet, qui définit une requête pour interroger les données et deux objets de retour, Header et Query.

Champ
Dans les requêtes GraphQL, le serveur renvoie la structure de données demandée au client avec des résultats précis pour chaque champ demandé. Les champs de réponse du serveur correspondent aux champs demandés du client. Comme le montre le diagramme suivant, sur la base de l'exemple défini ci-dessus, deux champs ont été demandés et deux résultats de champ ont été renvoyés. L'outil de référence utilisé est APOLLO.

Paramètres
Lors de l'interrogation de données, des paramètres peuvent être transmis pour spécifier les critères de la requête. Par exemple, dans le diagramme suivant, l'objet personne est interrogé avec le paramètre id pour récupérer les données d'attribut associées. L'ID réel peut être saisi dans la section des variables ci-dessous pour la requête. L'outil de référence utilisé est APOLLO.

Cas d'exécution
Exemple 1 : Sortie des résultats complets des données basés sur le modèle de données.

Exemple 2. Sortie uniquement de la propriété sélectionnée.

Avantages et inconvénients de GraphQL
Après avoir compris quelques concepts de base et l'utilisation de GraphQL, analysons brièvement les avantages et les inconvénients de l'utilisation de GraphQL.
Avantages de GraphQL
- GraphQL peut interroger toutes les données en utilisant une seule source de données. Toutes les requêtes peuvent accéder à un seul point de terminaison de serveur.
- La réponse de GraphQL correspond avec précision aux champs demandés par le client, ce qui réduit les interférences entre le client et le serveur.
- GraphQL prend en charge la définition et la transmission de tous les types de données, y compris la transmission de paramètres dans les requêtes.
- GraphQL dispose désormais de nombreuses plateformes d'outils open source, de plugins et d'extensions.
Inconvénients de GraphQL
- Les développeurs qui connaissent les requêtes RESTful peuvent avoir besoin de passer du temps à apprendre GraphQL.
- Par rapport au développement d'interfaces RESTful, les développeurs de serveurs peuvent avoir besoin de passer plus de temps à développer des modèles de données facilement maintenables.
GraphQL possède de nombreuses fonctionnalités plus intéressantes et une utilisation approfondie. Ici, nous recommandons d'essayer l'outil de référence APOLLO. GraphQL convient à l'exploration.
De plus, Apidog s'intègre actuellement à la fonctionnalité de débogage de GraphQL, et nous vous invitons également à essayer Apidog.
