C’est quoi Graphql
Un langage de requête pour votre API
GraphQL est un langage de requête pour les API et un runtime pour répondre à ces requêtes avec vos données existantes. GraphQL fournit une description complète et compréhensible des données de votre API, donne aux clients le pouvoir de demander exactement ce dont ils ont besoin et rien de plus, facilite l’évolution des API au fil du temps et permet de puissants outils de développement.
Demandez ce dont vous avez besoin,
obtenez exactement cela
Envoyez une requête GraphQL à votre API et obtenez exactement ce dont vous avez besoin, rien de plus et rien de moins. Les requêtes GraphQL renvoient toujours des résultats prévisibles. Les applications utilisant GraphQL sont rapides et stables car elles contrôlent les données qu’elles obtiennent, pas le serveur.
{ héros { nom h e i
ght } }
{ "hero" : { "name" : "Luke Skywalker" , "height" : 1,72 } }
Obtenez de nombreuses ressources
en une seule demande
Les requêtes GraphQL accèdent non seulement aux propriétés d’une ressource, mais suivent également en douceur les références entre elles. Alors que les API REST typiques nécessitent un chargement à partir de plusieurs URL, les API GraphQL obtiennent toutes les données dont votre application a besoin en une seule demande. Les applications utilisant GraphQL peuvent être rapides même sur des connexions réseau mobiles lentes.
{ hero { Nom amis { Nom } } }
{ "hero" : { "name" : "Luke Skywalker" , "friends" : [ { "name" : "Obi-Wan Kenobi" } , { "name" : "R2-D2" } , { "name" : "Han Solo" } , { "nom" : "Leia Organa" } ] } }
Décrire ce qui est possible
avec un système de type
Les API GraphQL sont organisées en termes de types et de champs, pas de points de terminaison. Accédez à toutes les capacités de vos données à partir d’un seul point de terminaison. GraphQL utilise des types pour garantir que les applications ne demandent que ce qui est possible et fournissent des erreurs claires et utiles. Les applications peuvent utiliser des types pour éviter d’écrire du code d’analyse manuelle.
{ hero { Nom amis { Nom homeWorld { Nom climat } espèces { Nom durée de vie origine { Nom } } } } }
type Query { hero : Character } type Caractère { nom : Amis de la chaîne : [ Personnage ] homeWorld : Planète espèce : Espèce } type Planet { name : String climate : String } type Espèce { nom : Chaîne durée de vie : Int origine : Planète }
Déplacez-vous plus rapidement avec de
puissants outils de développement
Sachez exactement quelles données vous pouvez demander à votre API sans quitter votre éditeur, mettez en évidence les problèmes potentiels avant d’envoyer une requête et profitez d’une meilleure intelligence du code. GraphQL facilite la création d’outils puissants comme Graph i QL en exploitant le système de type de votre API.
Faites évoluer votre API
sans versions
Ajoutez de nouveaux champs et types à votre API GraphQL sans impact sur les requêtes existantes. Les champs vieillissants peuvent être obsolètes et masqués par les outils. En utilisant une seule version évolutive, les API GraphQL donnent aux applications un accès continu aux nouvelles fonctionnalités et encouragent un code serveur plus propre et plus facile à gérer.
type Film { titre : String episode : Int releaseDate : String }
type Film { title : Épisode String : Int releaseDate : String OpeningCrawl : String }
type Film { titre : String episode : Int releaseDate : String OpeningCrawl : String director : String }
tapez Film { Titre : chaîne épisode : Int releasedate : Chaîne openingCrawl : Chaîne directeur : Chaîne directedBy : Personne } type Person { name : Chaîne réalisée : [ Film ] actedIn : [ Film ] }
tapez Film { Titre : chaîne épisode : Int releasedate : Chaîne openingCrawl : Chaîne directeur : Chaîne @deprecated directedBy : Personne } type Person { name : Chaîne réalisée : [ Film ] actedIn : [ Film ] }
Apportez vos propres
données et code
GraphQL crée une API uniforme sur l’ensemble de votre application sans être limité par un moteur de stockage spécifique. Écrivez des API GraphQL qui exploitent vos données et votre code existants avec des moteurs GraphQL disponibles dans de nombreuses langues. Vous fournissez des fonctions pour chaque champ du système de types et GraphQL les appelle avec une simultanéité optimale.
type Caractère { nom : String homeWorld : Planète amis : [ Personnage ] }
// tapez Caractère { classe Caractère { // nom: Chaîne getName ( ) { retourne ceci . _name } // homeWorld: Planet getHomeWorld ( ) { return fetchHomeworld ( this . _homeworldID ) } // friends: [Character] getFriends ( ) { retourne ceci . _friendIDs . map ( fetchCharacter ) } }
# type Caractère { classe Caractère : # nom : Chaîne def name ( self ) : retourne self . _Nom # homeWorld : Planet def homeWorld ( self ) : retourner fetchHomeworld ( self . _homeworldID ) # friends : [ Character ] def friends ( self ) : carte de retour ( fetchCharacter , self . _friendIDs )
// type Character { public class Character { // name: String public String Name { get ; } // homeWorld: Planet public async Task < Planet > GetHomeWorldAsync ( ) { retour en attente FetchHomeworldAsync ( _HomeworldID ) ; } // Amis: [Personnage] du public async IEnumerable < Tâche < Caractère > > GetFriendsAsync ( ) { return _FriendIDs . Sélectionnez ( FetchCharacterAsync ) ; }