Bibliothèque GraphQL JavaScript (Node.js) : Guide complet sur Apollo Server et les outils

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 pour Node.js : Apollo Server et outils de développement



GraphQL est un langage de requête pour API qui permet aux clients de demander uniquement les données dont ils ont besoin. Pour le développement sur Node.js, la bibliothèque la plus populaire est Apollo Server. Elle fournit un ensemble complet d'outils pour créer, tester et déployer des API GraphQL. Dans cet article, nous analyserons en détail les composants clés, les approches et les exemples de code.



Qu'est-ce qu'Apollo Server ?

Apollo Server est une bibliothèque open source qui permet de créer rapidement un serveur GraphQL sur Node.js. Elle prend en charge de nombreux transports (HTTP, WebSocket) et s'intègre facilement avec les frameworks (Express, Koa, Fastify). Principales fonctionnalités :

  • Génération automatique de documentation via GraphQL Playground.
  • Prise en charge des abonnements (subscriptions) via WebSocket.
  • Mécanisme de mise en cache et de regroupement de données (data loaders).
  • Système flexible de middleware pour l'authentification et l'autorisation.


Installation et configuration de base

Pour commencer, installez les paquets apollo-server et graphql :

npm install apollo-server graphql


Créez un serveur simple qui renvoie un message de bienvenue :

const { ApolloServer, gql } = require('apollo-server');

// Définir le schéma (SDL)const typeDefs = gql` type Query { hello: String }`;

// Résolveurs — fonctions qui renvoient les donnéesconst resolvers = { Query: { hello: () => 'Bonjour, GraphQL !', },};

// Démarrer le serveurconst server = new ApolloServer({ typeDefs, resolvers });server.listen().then(({ url }) => { console.log(`🚀 Serveur démarré sur ${url}`);});


Types de données et schémas

Dans GraphQL, le schéma définit tous les types et opérations disponibles. Types principaux :

  • String, Int, Float, Boolean, ID — types scalaires.
  • [Type] — liste d'objets.
  • type — objet personnalisé.
  • input — type pour les paramètres d'entrée des mutations.


Exemple de schéma pour un blog :

type User {  id: ID!  name: String!  posts: [Post!]!}

type Post { id: ID! title: String! content: String! author: User!}

type Query { user(id: ID!): User posts(limit: Int): [Post!]!}

type Mutation { createUser(name: String!): User!}


Résolveurs : liaison du schéma aux données

Chaque champ du schéma doit avoir un résolveur correspondant. Les résolveurs peuvent obtenir des données à partir d'une base de données (MongoDB, PostgreSQL), d'API externes ou de tableaux statiques.

const users = [  { id: '1', name: 'Anna' },  { id: '2', name: 'Boris' },];

const posts = [ { id: '10', title: 'GraphQL pour débutants', content: '...', authorId: '1' }, { id: '20', title: 'Conseils Node.js', content: '...', authorId: '2' },];

const resolvers = { Query: { user: (_, { id }) => users.find(u => u.id === id), posts: (_, { limit }) => limit ? posts.slice(0, limit) : posts, }, Mutation: { createUser: (_, { name }) => { const newUser = { id: String(users.length + 1), name }; users.push(newUser); return newUser; }, }, User: { posts: (parent) => posts.filter(p => p.authorId === parent.id), },};


Approche Code-first avec TypeGraphQL

Pour les grands projets, il est plus pratique d'utiliser l'approche code-first, où le schéma est généré à partir de classes TypeScript. La bibliothèque type-graphql permet d'écrire du code qui est à la fois un type et un résolveur.

npm install type-graphql reflect-metadata class-validator


Exemple de classe d'entité :

import { ObjectType, Field,                    

Recommendations