Apollo Server pour JavaScript (Node.js) : guide complet avec exemples
Apollo Server est une bibliothèque puissante et flexible pour créer des serveurs GraphQL avec Node.js. Elle fait partie de l'écosystème Apollo GraphQL et offre aux développeurs une boîte à outils pratique pour construire des API performantes, évolutives et faciles à maintenir. Si vous connaissez REST, imaginez GraphQL comme une alternative où le client décide lui-même des données dont il a besoin, et le serveur renvoie exactement ce qui a été demandé. Apollo Server gère toute la routine : analyse des requêtes, validation du schéma, exécution des résolveurs et mise en forme de la réponse.
Pourquoi utiliser Apollo Server ? D'abord, il simplifie considérablement le développement de serveurs GraphQL. Inutile d'écrire des analyseurs, des validateurs ou de vous soucier de la sécurité (protection contre les injections SQL, limitation de la profondeur des requêtes, etc.) — tout est déjà intégré. Ensuite, Apollo Server prend en charge de nombreuses intégrations : avec Express, Fastify, Koa, AWS Lambda, Azure Functions et d'autres plateformes. Vous pouvez donc déployer votre serveur partout, d'une simple application locale à une fonction serverless. Enfin, la bibliothèque est activement développée, bénéficie d'une large communauté et d'une excellente documentation, ce qui en fait le standard de facto pour GraphQL dans Node.js.
Dans cet article, nous allons détailler l'installation, les méthodes principales, écrire plusieurs exemples concrets et donner des conseils de performance. Ce contenu sera utile aussi bien aux débutants qui découvrent GraphQL qu'aux développeurs expérimentés souhaitant approfondir leurs connaissances d'Apollo Server.
1. Installation
Pour utiliser Apollo Server, vous avez besoin de Node.js version 14 ou supérieure. L'installation se fait via npm (ou yarn). Le package principal est @apollo/server. Vous aurez également besoin de graphql — le cœur du langage GraphQL, sans lequel Apollo Server ne peut pas fonctionner.
npm install @apollo/server graphql
Si vous prévoyez d'utiliser Apollo Server avec Express (l'option la plus populaire), installez également :
npm install express cors body-parser
npm install @as-integrations/express
Pour travailler avec TypeScript (recommandé), installez les types :
npm install --save-dev typescript @types/node @types/express
2. Démarrage rapide — exemple minimal fonctionnel
Créons un serveur GraphQL très simple qui salue l'utilisateur. Créez un fichier index.js et ajoutez le code suivant :
import { ApolloServer } from '@apollo/server';
import { startStandaloneServer } from '@apollo/server/standalone';
// 1. Définir le schéma (typeDefs)
const typeDefs = `#graphql
type Query {
hello: String
}
`;
// 2. Définir les résolveurs
const resolvers = {
Query: {
hello: () => 'Bonjour tout le monde ! C\'est Apollo Server !',
},
};
// 3. Créer une instance du serveur
const server = new ApolloServer({
typeDefs,
resolvers,
});
// 4. Démarrer le serveur
const { url } = await startStandaloneServer(server, {
listen: { port: 4000 },
});
console.log(`🚀 Serveur démarré à l'adresse : ${url}`);
Lancez le serveur avec la commande node index.js (si vous utilisez les modules ES, ajoutez "type": "module" dans package.json). Ouvrez votre navigateur et allez à http://localhost:4000. Vous verrez l'interface Apollo Sandbox, où vous pouvez exécuter la requête :
query {
hello
}
La réponse devrait être : { "data": { "hello": "Bonjour tout le monde ! C'est Apollo Server !" } }. Félicitations, votre premier serveur GraphQL fonctionne !
3. Méthodes/fonctions/classes principales
Examinons les éléments clés d'Apollo Server. Pour chacun, nous donnons la signature, une brève description et un exemple.
3.1. new ApolloServer(config)
Signature :
Aussi dans la bibliothèque
Intégration des métriques Prometheus en PHP : bibliothèques et exemples
Tortoise-ORM – ORM asynchrone
Parsing HTML en Node.js : aperçu des meilleures bibliothèques et outils
Création d'applications CLI en TypeScript : aperçu des frameworks et outils
Générateur de QR codes en PHP : bibliothèque phpqrcode et alternatives
Recommendations