Fastify pour JavaScript (Node.js) : guide complet avec exemples

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

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' }
  }
});

Recommendations