Outils du site

L'astronome peut vous parler de son entendement de l'espace. Il ne peut vous donner son entendement. Le musicien peut vous interpréter le rythme qui régit tout espace. Il ne peut vous donner l'ouïe qui capte le rythme, ni la voix qui lui fait écho. Celui qui est versé dans la science des nombres peut décrire les régions du poids et de la mesure. Il ne peut vous y emmener. Car la vision d'un être ne prète pas ses ailes à d'autres, De même que chacun de vous se tient seul dans la connaissance de Dieu, chacun de vous doit demeurer seul dans sa connaissance de Dieu et dans son entendement de la terre. [Khalil GIBRAN]

60-database:graphql

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
60-database:graphql [2019/12/24 08:58] Roge60-database:graphql [2020/01/12 10:03] (Version actuelle) Roge
Ligne 4: Ligne 4:
 ===== Introduction ===== ===== Introduction =====
  
-[[https://graphql.org/|HraphQL]] est un langage de requête pour API.+[[https://graphql.org/|GraphQL]] est un langage de requête pour API.
  
-Contrairement à REST qui préconise de définir une API par requête, GraphQL propose un seul end point pour toutes les requêtes.+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:58