GraphQL sur Node.js : Guide complet de la bibliothèque graphql-http

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) : graphql-http



GraphQL est un langage de requête pour les API, développé par Facebook, qui permet aux clients de demander uniquement les données dont ils ont besoin. Dans l'écosystème Node.js, l'une des bibliothèques clés pour implémenter des serveurs GraphQL est graphql-http. C'est un outil léger mais puissant qui permet de créer des API hautes performances avec un minimum de frais généraux. Contrairement à des solutions plus lourdes comme Apollo Server, graphql-http offre une flexibilité et un contrôle total sur les gestionnaires HTTP.



Qu'est-ce que graphql-http ?



graphql-http est une bibliothèque officielle de la communauté GraphQL qui fournit un moyen simple de connecter GraphQL à n'importe quel serveur HTTP Node.js. Elle est indépendante de tout framework spécifique (Express, Koa, Fastify, etc.), ce qui en fait un choix universel. La tâche principale de la bibliothèque est de prendre une requête HTTP entrante, de l'analyser, d'exécuter la requête GraphQL et de renvoyer une réponse structurée.



Installation et configuration



Pour commencer, installez la bibliothèque via npm :



npm install graphql-http graphql


Exemple minimal de serveur sur Node.js pur (sans Express) :



const http = require('http');const { createHandler } = require('graphql-http');const { buildSchema } = require('graphql');

// Définir le schémaconst schema = buildSchema(` type Query { hello: String user(id: Int!): User } type User { id: Int name: String email: String }`);

// Résolveursconst rootValue = { hello: () => 'Bonjour le monde !', user: ({ id }) => ({ id, name: `Utilisateur ${id}`, email: `user${id}@example.com` })};

// Créer le gestionnaireconst handler = createHandler({ schema, rootValue });

// Serveur HTTPconst server = http.createServer((req, res) => { if (req.url === '/graphql') { handler(req, res); } else { res.writeHead(404); res.end('Not Found'); }});

server.listen(4000, () => { console.log('Serveur démarré sur http://localhost:4000/graphql');});


Intégration avec Express



La plupart des développeurs utilisent Express. L'intégration de graphql-http avec Express est triviale :



const express = require('express');const { createHandler } = require('graphql-http');const { buildSchema } = require('graphql');

const schema = buildSchema(` type Query { books: [Book] } type Book { title: String author: String }`);

const books = [ { title: 'Guerre et Paix', author: 'Léon Tolstoï' }, { title: 'Crime et Châtiment', author: 'Fiodor Dostoïevski' }];

const rootValue = { books: () => books};

const app = express();

app.all('/graphql', createHandler({ schema, rootValue }));

app.listen(3000, () => { console.log('Express + GraphQL sur http://localhost:3000/graphql');});


Fonctionnalités et avantages principaux



  • Flexibilité du routage : vous décidez vous-même sur quel endpoint GraphQL sera disponible.
  • Prise en charge de toutes les méthodes HTTP : les requêtes GET et POST sont traitées correctement.
  • Validation intégrée : la bibliothèque vérifie automatiquement la conformité des requêtes au schéma.
  • Performance : consommation mémoire minimale et vitesse de traitement élevée.
  • Extensibilité : possibilité d'ajouter des middleware pour l'authentification, la journalisation et la mise en cache.


Travailler avec les mutations et les abonnements



En plus des requêtes (Query), graphql-http prend en charge les mutations (Mutation) pour modifier les données. Exemple de schéma avec mutation :



const schema = buildSchema(`  type Query {    message: String  }  type Mutation {    setMessage(newMessage: String!): String  }`);

let message = 'An

Recommendations