Outils du site

Ne dites pas: \"J'ai trouvé la vérité\", mais plutôt: \"J'ai trouvé une vérité\". Ne dites pas: \"J'ai trouvé le chemin de l'âme\". Dites plutôt: \"J'ai rencontré l'âme marchant sur mon chemin\". Car l'âme marche sur tous les chemins.L'âme ne marche pas sur une ligne de crête, pas plus qu'elle ne croit tel un roseau.L'âme se déploie, comme un lotus aux pétales innombrables. [Khalil GIBRAN]

60-database:graphql

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
60-database:graphql [2019/12/24 08:48] – créée Roge60-database:graphql [2020/01/12 10:03] (Version actuelle) Roge
Ligne 2: Ligne 2:
  
  
 +===== Introduction =====
  
 +[[https://graphql.org/|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 =====
 +
 +
 +[[https://graphql.org/learn/schema/|"GraphQL schema language"]]
 +
 +
 +Les types d'opération :
 +  * query
 +  * mutation
 +  * subscription
 +
 +===== Query =====
 +
 +Requête qui ramène le résultat d'une interrogation.
 +
 +<code javascript>
 +query HeroNameAndFriends($episode: Episode = JEDI) {
 +  hero(episode: $episode) {
 +    name
 +    friends {
 +      name
 +    }
 +  }
 +}
 +</code>
 +
 +===== Mutation =====
 +
 +Opération qui mets à jour la base de données.
 +
 +<code javascript>
 +mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
 +  createReview(episode: $ep, review: $review) {
 +    stars
 +    commentary
 +  }
 +}
 +</code>
 +
 +===== subscription =====
 +
 +<code javascript>
 +
 +</code>
 +
 +===== 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 =====
 +
 +[[https://blog.logrocket.com/5-reasons-you-shouldnt-be-using-graphql-61c7846e7ed3/| 5 reasons you shouldn’t be using GraphQ]]
 +
 +[[https://github.com/Novvum/36-graphql-concepts/blob/master/README.md| 36 Concepts Every GraphQL Developer Should Know]]
Dernière modification : 2019/12/24 08:48