Outils du site

La diminution de la quantité de travail permettant de produire les biens nécessaires devrait être saluée comme un des grands succés de notre imagination créatrice. Que cette diminution soit source de chômage est le signe d'une erreur fondamentale de l'organisation de notre société. Le véritable remède contre le chômage est qu'il n'y ait plus de travail pour personne, mais pour chacun une place dans la société. [Albert Jacquard]

60-database:graphql

GraphQL

Introduction

GraphQL est un langage de requête pour API.

Contrairement à REST qui préconise de définir une URL par requête, GraphQL propose un seul endpoint pour toutes les requêtes.

Schéma

"GraphQL schema language"

Les types d'opération :

  • query
  • mutation
  • subscription

Query

Requête qui ramène le résultat d'une interrogation.

query HeroNameAndFriends($episode: Episode = JEDI) {
  hero(episode: $episode) {
    name
    friends {
      name
    }
  }
}

Mutation

Opération qui mets à jour la base de données.

mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
  createReview(episode: $ep, review: $review) {
    stars
    commentary
  }
}

subscription


Directives

Une directive permet de mettre une condition sur un champ de la requête :

  • @include(if: Boolean) Only include this field in the result if the argument is true.
  • @skip(if: Boolean) Skip this field if the argument is true.

proposition de regles

Chaque opération doit être nommée, ne pas utiliser les raccourcis pour écrire des requêtes sans nom. –> faciliter le débuggage

Utiliser systématiquement des $variables dans les opérations (aucune valeur statique dans les requetes). –> Réutilisabilité

Références

Dernière modification : 2020/01/12 10:03