web-dev-qa-db-fra.com

Quelle est la différence entre mutation et requête

Je lis GraphQLdocumentationQuery et Mutation sont décrits. Cependant, il y a un manque d'exemples réels qui montrent et/ou décrivent la différence entre eux, et surtout - quand est-il approprié de l'utiliser.

Merci beaucoup pour les explications.

25
Reborn

Court

Conventionnellement:

  • Query - pour interroger des données (SELECT opérations)
  • Mutation - pour créer de nouvelles données et mettre à jour/supprimer des données existantes (INSERT, UPDATE, DELETE)

Détaillé

Techniquement toute requête GraphQL pourrait être implémentée pour provoquer une écriture de données . Mais il existe une convention selon laquelle toutes les opérations qui provoquent des écritures doivent être envoyées explicitement via une mutation.

Outre la différence dans la sémantique, il y a une différence technique importante :

Query champs peuvent être exécutés en parallèle par le moteur GraphQL tandis que Mutation champs de niveau supérieur DOIT s'exécuter en série selon la spécification:

Si l'opération est une mutation, le résultat de l'opération est le résultat de l'exécution de la sélection de niveau supérieur de la mutation définie sur le type d'objet racine de mutation. Ce jeu de sélection doit être exécuté en série .

Il est prévu que les champs de niveau supérieur dans une opération de mutation produisent des effets secondaires sur le système de données sous-jacent. L'exécution en série des mutations fournies garantit contre les conditions de concurrence lors de ces effets secondaires.

Source: https://graphql.github.io/graphql-spec/draft/#sec-Mutation

41
RomanHotsiy

En termes simples, la requête est une instruction SELECT et la mutation est une opération INSERT.

La requête dans graphql est utilisée pour récupérer les données tandis que la mutation est utilisée pour l'opération INSERT/UPDATE/DELETE.

9
Ranjeet Avghad

requête = SELECT

mutation = INSÉRER, METTRE À JOUR, SUPPRIMER

7
neattom

pensez à [~ # ~] reste [~ # ~] :

requête => [~ # ~] obtenez [~ # ~] , mutation => [~ # ~] poster [~ # ~] , [~ # ~] mettre [~ # ~] , [~ # ~] patch [~ # ~] , [ ~ # ~] supprimer [~ # ~]

3
Muhammed Moussa