Bibliothèque GraphQL JavaScript (Node.js) — Guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèque GraphQL JavaScript (Node.js) : Guide complet



GraphQL est un langage de requête et un environnement d'exécution pour les API, développé par Facebook. Dans l'écosystème Node.js, la bibliothèque principale pour travailler avec GraphQL est le paquet graphql. Il fournit tous les outils nécessaires pour créer, valider et exécuter des requêtes GraphQL. Cette bibliothèque est le fondement de frameworks populaires tels qu'Apollo Server, Express-GraphQL et autres.



Qu'est-ce que GraphQL et pourquoi en a-t-on besoin ?

Contrairement à une API REST, où chaque endpoint renvoie une structure de données fixe, GraphQL permet au client de demander uniquement les champs dont il a besoin. Cela résout les problèmes de sur-récupération (over-fetching) et de sous-récupération (under-fetching) de données. Les principaux avantages :

  • Flexibilité des requêtes : le client décide lui-même quelles données obtenir.
  • Point d'entrée unique : toutes les requêtes vont vers un seul endpoint (par exemple, /graphql).
  • Typage strict : le schéma GraphQL définit les types de données et leurs relations.
  • Introspection : possibilité de générer automatiquement de la documentation et des outils de test (GraphiQL).


Installation de la bibliothèque GraphQL pour Node.js

Pour commencer, installez le paquet via npm ou yarn :

npm install graphql

Vous aurez également besoin d'un serveur HTTP, par exemple express, et d'un middleware express-graphql (ou Apollo Server). Mais la bibliothèque graphql elle-même en est le cœur.



Création du premier schéma et résolveur

Le schéma est une description des types de données et des opérations disponibles (requêtes, mutations). Les résolveurs sont des fonctions qui exécutent la logique réelle de récupération des données.

Exemple d'un schéma simple avec un type User et une requête user :

const { graphql, buildSchema } = require('graphql');

// Définir le schémaconst schema = buildSchema(` type User { id: ID! name: String email: String }

type Query { user(id: ID!): User }`);

// Données (dans un projet réel — base de données)const users = [ { id: '1', name: 'Ivan', email: 'ivan@example.com' }, { id: '2', name: 'Maria', email: 'maria@example.com' }];

// Résolveursconst root = { user: ({ id }) => users.find(user => user.id === id)};

// Exécuter la requêtegraphql({ schema, source: '{ user(id: "1") { name email } }', rootValue: root}).then(response => { console.log(JSON.stringify(response)); // {"data":{"user":{"name":"Ivan","email":"ivan@example.com"}}}});


Types de données dans GraphQL

La bibliothèque graphql prend en charge tous les types scalaires standards :

  • String — chaîne de caractères ;
  • Int — nombre entier ;
  • Float — nombre à virgule flottante ;
  • Boolean — valeur booléenne ;
  • ID — identifiant unique (sérialisé sous forme de chaîne).

Il est également possible de créer ses propres types d'objets, des énumérations (enum), des listes ([Type]) et des champs non nuls (Type!).



Mutations et abonnements

Les mutations sont utilisées pour modifier les données (équivalent de POST/PUT/DELETE dans REST). Les abonnements permettent de recevoir des mises à jour en temps réel via WebSocket.

Exemple de mutation pour ajouter un utilisateur :

const schema = buildSchema(`  type Mutation {    addUser(name: String!, email: String!): User  }`);

const root = { addUser: ({ name, email }) => { const newUser = { id: String(users.length + 1), name, email }; users.push(newUser); return newUser; }};

// Exécution de la mutationgraphql({ schema, source: 'mutation { addUser(name: "Pierre", email: "pierre@example.com") { id name } }', rootValue: root}).then(console.

Recommendations