graphql Tutoriel
Démarrer avec graphql
Recherche…
Remarques
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 la possibilité de demander exactement ce dont ils ont besoin et rien de plus, facilite l’évolution des API au fil du temps et permet des outils de développement puissants.
Quand devrais-je utiliser GraphQL?
GraphQL est destiné à être l'API HTTP orientée vers l'extérieur pour tout type d'application, mais il est plus puissant lorsque les données sont normalisées avec des Collections | Tables | Nœuds hautement interconnectés. Le langage de requête GraphQL (GQL) est conçu pour projeter des données interconnectées de manière très intuitive et flexible.
Les implémentations
GraphQL lui-même est une spécification et est implémenté par un certain nombre de langages de programmation différents. Ce sont les langages pris en charge les plus populaires
- GraphQL.js
- graphql-ruby
- Graphène (Python)
- Sangria (Scala)
- graphql-java
- graphql-clj (Clojure)
- graphql-go
- graphql-php
- graphql-dotnet (C # / .Net)
- absinthe (élixir)
Bibliothèques client
L'exécution de requêtes du côté client peut être effectuée avec n'importe quel client HTTP, mais les bibliothèques côté client peuvent être très bénéfiques.
Outils de développement
- graphiql / ˈɡrafək (ə) l / - Un IDE graphique intégré dans le navigateur.
- libgraphqlparser - Un analyseur de langage de requête GraphQL en C ++ avec les API C et C ++.
- Service de langage GraphQL - Une interface pour la création de services de langage GraphQL pour les IDE (diagnostics, autocomplete, etc.).
Versions
Version | Date de sortie |
---|---|
v0.5.0 | 2016-04-08 |
v0.6.0 | 2016-05-10 |
v0.6.1 | 2016-07-07 |
v0.6.2 | 2016-07-21 |
v0.7.0 | 2016-08-26 |
v0.7.1 | 2016-09-29 |
v0.7.2 | 2016-10-10 |
v0.8.0 | 2016-11-10 |
v0.8.1 | 2016-11-11 |
v0.8.2 | 2016-11-16 |
Installation et implémentation du serveur
GraphQL.js
GraphQL.js est une implémentation de référence JavaScript pour GraphQL. Vous pouvez l'installer via npm:
- Initialisez npm dans votre projet si vous ne l'avez pas déjà fait:
npm init
- Installez GraphQL.js à partir de npm:
npm install --save graphql
Exemple de serveur
var { graphql, buildSchema } = require('graphql');
// Construct a schema, using GraphQL schema language
var schema = buildSchema(`
type Query {
hello: String
}
`);
// The root provides a resolver function for each API endpoint
var root = {
hello: () => {
return 'Hello world!';
},
};
// Run the GraphQL query '{ hello }' and print out the response
graphql(schema, '{ hello }', root).then((response) => {
console.log(response);
});
Alternatives au middleware serveur
Langage d'interrogation GraphQL (GQL)
Au lieu de définir les noeuds finaux d'URL pour chaque ressource de données, vous définissez dans GraphQL un seul noeud final qui accepte les requêtes GraphQL. Contrairement aux langages de requête de base de données traditionnels, le langage de requête GraphQL (GQL) est une projection de données renvoyée par une requête de niveau racine. Le schéma GraphQL définira le modèle de données et les requêtes et mutations au niveau racine. GQL exécute ces requêtes et définit les données à renvoyer.
Query for All Film Titles de Star Wars Schema
Query for Planet Residents au film Star Wars "Un nouvel espoir"
Remarquez comment le film()
requête racine film()
prend en compte le paramètre id du film "A New Hope" et la projection de GQL renvoie le titre, les planètes connectées au film, puis les noms de résident des planètes. Découvrez le site Star Wars GraphiQL pour tester les requêtes dans GraphQL.
Définition du schéma
Dans GraphQL, le schéma définit les requêtes et les mutations d' exécution racine, ainsi que les types de vos données.
Type d'objet de schéma
Le type Person
a deux champs, l'un est un type Scalar standard et l'autre représente une relation avec une liste d'autres types de personnes qui sont des «amis». Lier d'autres types est ce qui rend GraphQL si puissant. Désormais, dans le langage de requête GraphQL (GQL), le client peut parcourir le graphique des amis sans code ni requête avancée.
type Person {
id: ID
name: String
friends: [Person]
}
Requête de schéma
La person
interroge une personne par son identifiant. C'est le point d'entrée de vos données pour les clients utilisant GQL.
type Query {
person(id: ID!): Person
}
Interroger les amis de l'ami de Nick
Maintenant que nous avons un type de personne et une requête de personne, nous pouvons rechercher une personne et autant de degrés de séparation que nous voulons du réseau d'amis de la personne.
query {
person(id: 'nick'){
id
name
friends{
id
name
friends{
id
name
friends{
id
name
}
}
}
}
}