Fermer

juin 19, 2019

Un premier regard sur les requêtes, les mutations et les abonnements GraphQL


Dans cet article, nous vous donnons un aperçu des fonctionnalités de GraphQL couvrant les requêtes, les mutations et les abonnements.

GraphQL est un langage de source de données et de manipulation à source ouverte pour les API, ainsi qu'un environnement d'exécution permettant d'effectuer des requêtes avec des requêtes existantes. Les données. Dans cet article, nous examinerons en détail les fonctionnalités principales de GraphQL, telles que les requêtes, les mutations et les abonnements, pour mieux les comprendre et montrerons également comment exploiter au mieux leurs fonctionnalités pour créer de meilleures API avec GraphQL.

Requêtes [19659004] Je considère que les requêtes constituent la partie la plus importante de l’architecture GraphQL. Ce sont les moyens par lesquels le client peut demander au serveur les données dont il a besoin.

Les requêtes GraphQL fournissent également la différence majeure entre GraphQL et REST. En tant que tel, bien que REST ait une structure claire des données renvoyées par un noeud final donné, GraphQL n'expose qu'un noeud final pour toutes les demandes, permettant ainsi au client de demander ce dont il a spécifiquement besoin.

la structure des requêtes GraphQL permet de maintenir le dicton commun suivant: «Avec GraphQL, vous pouvez demander ce que vous voulez et obtenir exactement cela en retour, ni plus ni moins." Considérons l'exemple ci-dessous:

 {
   Voitures  {
      modèle
   } 
} 

Voici la composition de base d'une requête simple, un champ racine (dans ce cas, Cars ) qui est l'objet contenant la charge utile, et la charge utile elle-même ( dans ce cas, modèle ) qui correspond au (x) champ (s) demandé (s) par le client. De toute évidence, cette requête demande au serveur le modèle des voitures. La réponse sera donc exactement la suivante:

       {
         "Voitures" :   [
           { "modèle ":  " Mercedez Benz Classe E "} 
           {" modèle ":  " Toyota Camry "}  ]
           { "modèle" :   "Toyota Corolla" } 
           { "modèle" :   "Honda Accord "} 
           {" modèle ":  " BMW "} 
           {" modèle "[19659012]:   "Peugeot" } 
           { "modèle" :   "Ferrari" } 
        ] 
      } [19659009] Comme prévu, le serveur répondra avec exactement les données demandées. Comme nous ne demandons que le champ de modèle, le serveur n'a répondu qu'avec ces données. Maintenant, par exemple, nous redéfinissons notre requête pour demander un autre champ,  an ainsi: 

       {
        Voitures  {
          modèle
          année
        } 
      } 

Nous obtiendrons le nouveau champ demandé dans la réponse comme suit:

       {
         "Voitures" :   [
           {. "modèle" :   "Mercedez Benz Classe E"   "année" :  "2012" } 
           {[19659015] "modèle" :   "Toyota Camry"   "année" :  "2010" } 
           {[19659015] "modèle" :   "Toyota Corolla"   "année" :  "2013" } 
           {. "modèle" :   "Honda Accord"   "année" :  "2009" } 
           { " modèle ":  " BMW " " année ": " 2010 "} 
           {" modèle " :   "Peugeot"   "année" :  "2014" } 
           { "modèle ":  " Ferrari " " année ": " 2015 "} 
        ] 
      } 

. Il existe d'autres fonctionnalités qui étendent les capacités des requêtes GraphQL. Par exemple, nous pourrions utiliser Arguments pour renvoyer une voiture spécifique avec sa marque et même demander davantage de données sur la voiture sélectionnée. Prenons cet exemple:

       {
        Voiture  ( marque :   "Benz" )   {
          modèle
          année
          transmission
        } 
      } 

Nous avons passé ici un Argument pour limiter notre demande à une voiture spécifique portant le nom de la marque de voiture, qui est dans ce cas "Benz". le serveur répondra avec tous les champs que nous avons demandés sur cette voiture (modèle, année et transmission) comme suit:

       {  "voiture" :  
           { 
             "marque" :   "Benz"  
             "modèle" :   "Mercedez Benz Classe E" 
             "année"  : [19659017] "2012" 
             "transmission"  :   "automatique" 
          }  
       

Vous pouvez également rechercher davantage de fonctionnalités de requêtes GraphQL telles que Variables, Aliases, Syntaxe d'opération, fragments, directives, etc. pour mieux comprendre l'étendue des requêtes.

Mutations

Dans GraphQL, les mutations sont principalement utilisées pour modifier des données sur le serveur. Elles ne sont pas très différentes des requêtes que nous avons écrites auparavant. En fait, ils partagent la même syntaxe avec l'inclusion du mot clé de la mutation . Avec la mutation GraphQL, nous pouvons créer, mettre à jour et supprimer des données sur le serveur.

Créer une nouvelle voiture

En considérant nos exemples de requête précédents, si nous voulions créer ou ajouter une nouvelle voiture à nos voitures. , on peut le faire avec une mutation comme celle-ci:

  mutation   {
        createCar ( modèle : “Lamborgini” année : 2013




Source link