Fastify pour JavaScript (Node.js) : guide complet avec exemples
1. Qu'est-ce que Fastify et pourquoi l'utiliser ?
Fastify est un framework web haute performance pour Node.js, inspiré par Hapi et Express, mais axé sur la vitesse et une faible consommation mémoire. Créé en 2016 par les développeurs de l'équipe NearForm, il est devenu l'une des solutions les plus rapides pour créer des API REST, des microservices et des applications web en JavaScript/TypeScript.
La principale raison d'utiliser Fastify est sa performance. Selon les tests, il peut traiter 30 à 40 % de requêtes en plus par seconde par rapport à Express, avec la même consommation de ressources. Cela est possible grâce à une architecture asynchrone basée sur les Node.js streams, un parsing JSON efficace (via fast-json-stringify) et un routeur optimisé utilisant un Radix Tree (arbre préfixe compressé).
En plus de la vitesse, Fastify offre une validation de schéma intégrée via JSON Schema, une mise en cache automatique des réponses, une prise en charge native de TypeScript, un système de plugins extensible et une documentation excellente. Cela en fait un choix idéal pour les projets en production où la stabilité et un comportement prévisible sous charge sont essentiels.
2. Installation
Fastify s'installe via npm (Node Package Manager). Assurez-vous d'avoir Node.js version 18 ou supérieure (LTS recommandée).
# Installation de base
npm install fastify
# Pour TypeScript (optionnel)
npm install -D @types/node typescript
# Pour les cookies, sessions, etc.
npm install @fastify/cookie @fastify/session
Si vous utilisez yarn ou pnpm :
yarn add fastify
# ou
pnpm add fastify
3. Démarrage rapide — exemple minimal fonctionnel
Créez un fichier server.js et exécutez-le avec node server.js.
// server.js
const fastify = require('fastify')({
logger: true // Active le logger intégré (pino)
});
// Définit la route GET /
fastify.get('/', async (request, reply) => {
return { hello: 'world' };
});
// Démarrage du serveur
const start = async () => {
try {
await fastify.listen({ port: 3000 });
console.log('Serveur démarré sur http://localhost:3000');
} catch (err) {
fastify.log.error(err);
process.exit(1);
}
};
start();
Après le démarrage, ouvrez votre navigateur ou exécutez curl http://localhost:3000. Vous obtiendrez la réponse JSON {"hello":"world"}.
4. Méthodes / fonctions / classes principales
4.1. fastify.get(path, options, handler)
Signature : fastify.get(path: string, opts?: RouteShorthandOptions, handler: RequestHandler)
Fonction : Enregistre un gestionnaire pour les requêtes HTTP GET sur le chemin spécifié.
fastify.get('/user/:id', async (request, reply) => {
const { id } = request.params;
return { userId: id, name: 'John Doe' };
});
4.2. fastify.post(path, options, handler)
Signature : fastify.post(path: string, opts?: RouteShorthandOptions, handler: RequestHandler)
Fonction : Enregistre un gestionnaire pour les requêtes HTTP POST. Analyse automatiquement le corps de la requête (JSON, form-data, etc.).
fastify.post('/user', async (request, reply) => {
const { name, email } = request.body;
// Sauvegarde de l'utilisateur en BDD...
return { status: 'created', name, email };
});
4.3. fastify.register(plugin, opts)
Signature : fastify.register(plugin: FastifyPluginAsync | FastifyPluginCallback, opts?: RegisterOptions)
Fonction : Enregistre un plugin Fastify. Les plugins permettent d'ajouter des fonctionnalités comme l'authentification, la gestion des fichiers, etc.
// Exemple avec un plugin de validation
fastify.register(require('@fastify/swagger'), {
routePrefix: '/documentation',
swagger: {
info: { title: 'Mon API', version: '1.0.0' }
}
});
Aussi dans la bibliothèque
Travailler avec XML en Kotlin : bibliothèques, analyse et création de documents
Envoi d'email en Go (Golang) : bibliothèques et exemples de code
Travailler avec les dates en Kotlin : aperçu des bibliothèques et outils
Remeda pour TypeScript : guide complet avec exemples