Par Matteo Collina & Tomas Della Vedova · 2016 · Sources officielles vérifiées
En résumé
Framework web moderne pour Node.js axé sur une vitesse d'exécution maximale, une faible surcharge mémoire et une validation stricte des données via JSON Schema.
Fastify est un framework backend open-source faisant partie de l'OpenJS Foundation. Il est réputé pour être l'un des frameworks web les plus rapides sur le runtime Node.js, capable de traiter jusqu'à 2 à 3 fois plus de requêtes par seconde qu'Express. Fastify atteint ces performances grâce à l'utilisation interne de `fast-json-stringify` pour accélérer la sérialisation des réponses et d'`Ajv` pour valider les paramètres et payloads entrants, tout en offrant un système de plugins hiérarchique avec encapsulation complète.
Fastify réduit au minimum absolu le coût d'exécution par requête HTTP.
Au lieu d'utiliser le classique `JSON.stringify()`, Fastify compile des fonctions JavaScript spécialisées basées sur le schéma de sortie déclaré, générant des chaînes JSON jusqu'à 2x plus rapidement.
Validation automatique des headers, query params, params d'URL et body selon la norme JSON Schema avant même d'entrer dans la logique de la route.
Modèle de dépendances arborescent où un plugin peut enregistrer des décorateurs et hooks isolés sans polluer le scope global de l'application.
Serveur Fastify typé avec validation de schéma JSON et logging Pino
import Fastify from 'fastify';
const fastify = Fastify({
logger: true, // Pino logger intégré
});
// Définition de route avec validation JSON Schema stricte
fastify.post('/api/users', {
schema: {
body: {
type: 'object',
required: ['email', 'name'],
properties: {
email: { type: 'string', format: 'email' },
name: { type: 'string', minLength: 2 },
},
},
response: {
201: {
type: 'object',
properties: {
id: { type: 'string' },
email: { type: 'string' },
status: { type: 'string' },
},
},
},
},
}, async (request, reply) => {
const { email, name } = request.body as { email: string; name: string };
// Logique métier...
return reply.status(201).send({
id: "usr_12345",
email,
status: "active",
});
});
await fastify.listen({ port: 3000, host: '0.0.0.0' });Fastify est beaucoup plus rapide et moderne qu’Express, avec validation de schémas intégrée et support TypeScript natif.
| Critère | Fastify | Express.js |
|---|---|---|
| Débit / Performance | Jusqu’à 2x à 3x plus de requêtes par seconde qu’Express. | Performance modérée, architecture historique datant de 2010. |
| Validation des données | JSON Schema et Ajv natifs, pré-compilés au démarrage. | Aucune validation intégrée, nécessite des middlewares tiers manuels (Zod, Joi). |
| Support async/await | Support natif des fonctions asynchrones sans gestion manuelle de try/catch `next(err)`. | Historiquement basé sur des callbacks `next()`, gestion d’erreurs async délicate en v4. |
Données techniques vérifiées auprès des documentations officielles, des RFCs et des spécifications standards.