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

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

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

Requête de données Star Wars pour allFilms avec uniquement une projection du titre Requête GraphiQL

Query for Planet Residents au film Star Wars "Un nouvel espoir"

entrer la description de l'image ici Requête GraphiQL

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
        }
      }
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow