Fastify für JavaScript (Node.js): Komplettes Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Fastify für JavaScript (Node.js): Komplettes Tutorial mit Beispielen

1. Was ist Fastify und warum sollte man es nutzen?

Fastify ist ein leistungsstarkes Web-Framework für Node.js, inspiriert von Hapi und Express, aber mit Fokus auf Geschwindigkeit und geringen Speicherverbrauch. Es wurde 2016 von Entwicklern des Teams NearForm entwickelt und hat sich seitdem zu einer der schnellsten Lösungen für REST-APIs, Microservices und Webanwendungen mit JavaScript/TypeScript entwickelt.

Der Hauptgrund für den Einsatz von Fastify ist seine Performance. Benchmarks zeigen, dass es bis zu 30-40% mehr Anfragen pro Sekunde verarbeiten kann als Express, bei gleichem Ressourcenverbrauch. Dies wird durch eine asynchrone Architektur auf Basis von Node.js Streams, effizientes JSON-Parsing (via fast-json-stringify) und einen optimierten Router auf Basis eines Radix Tree (komprimierter Präfixbaum) erreicht.

Neben der Geschwindigkeit bietet Fastify eine integrierte Schema-Validierung über JSON Schema, automatisches Response-Caching, TypeScript-Support out-of-the-box, ein erweiterbares Plugin-System und eine hervorragende Dokumentation. Das macht es zur idealen Wahl für Produktionsprojekte, bei denen Stabilität und vorhersagbares Verhalten unter Last entscheidend sind.

2. Installation

Fastify wird über npm (Node Package Manager) installiert. Stelle sicher, dass Node.js in Version 18 oder höher installiert ist (LTS wird empfohlen).

# Basisinstallation
npm install fastify

# Für TypeScript (optional)
npm install -D @types/node typescript

# Für Cookies, Sessions usw.
npm install @fastify/cookie @fastify/session

Wenn du yarn oder pnpm verwendest:

yarn add fastify
# oder
pnpm add fastify

3. Schnellstart – Minimales Arbeitsbeispiel

Erstelle eine Datei server.js und starte sie mit node server.js.

// server.js
const fastify = require('fastify')({
  logger: true // Integrierten Logger (pino) aktivieren
});

// GET-Route definieren
fastify.get('/', async (request, reply) => {
  return { hello: 'world' };
});

// Server starten
const start = async () => {
  try {
    await fastify.listen({ port: 3000 });
    console.log('Server läuft auf http://localhost:3000');
  } catch (err) {
    fastify.log.error(err);
    process.exit(1);
  }
};

start();

Öffne nach dem Start den Browser oder führe curl http://localhost:3000 aus. Du erhältst die JSON-Antwort {"hello":"world"}.

4. Wichtige Methoden/Funktionen/Klassen

4.1. fastify.get(path, options, handler)

Signatur: fastify.get(path: string, opts?: RouteShorthandOptions, handler: RequestHandler)

Funktion: Registriert einen Handler für HTTP-GET-Anfragen unter dem angegebenen Pfad.

fastify.get('/user/:id', async (request, reply) => {
  const { id } = request.params;
  return { userId: id, name: 'John Doe' };
});

4.2. fastify.post(path, options, handler)

Signatur: fastify.post(path: string, opts?: RouteShorthandOptions, handler: RequestHandler)

Funktion: Registriert einen Handler für HTTP-POST-Anfragen. Parst automatisch den Request-Body (JSON, form-data usw.).

fastify.post('/user', async (request, reply) => {
  const { name, email } = request.body;
  // Benutzer in der DB speichern...
  return { status: 'created', name, email };
});

4.3. fastify.register(plugin, opts)

Signatur: fastify.register(plugin: FastifyPluginAsync | FastifyPluginCallback, opts?: object)

Funktion: Registriert ein Plugin. Plugins sind der empfohlene Weg, um Funktionalität zu kapseln und wiederzuverwenden (z. B. Routen, Hooks, Dekoratoren).

// Beispiel: Ein Plugin für Benutzer-Routen
async function userRoutes(fastify, options) {
  fastify.get('/users', async (request, reply) => {
    return { users: [] };
  });
}

fastify.register(userRoutes, { prefix: '/api' });
// Die Route ist nun unter /api/users verfügbar

Empfehlungen