Kodokon kodokon.com

Express: Routen und Middleware

Installiere Express und strukturiere deinen ersten Server mit Routen, URL-Parametern und Middleware.

9 Min. · 3 Fragen

Diese Lektion in Kodokon öffnen

Du weißt bereits, wie du mit dem nativen Modul http einen Server startest: Dort ist alles manuell, vom Lesen der URL bis zum Zusammenbauen der Header. Express ist das Framework, das die Webentwicklung auf der Node-Seite standardisiert hat: Routing, Middleware, eine knappe API, ohne irgendetwas am Protokoll zu verbergen. Erstelle ein Projekt und installiere es.

BASH
mkdir kodokon-api
cd kodokon-api
npm init -y
npm install express

Füge deiner package.json die Eigenschaft type mit dem Wert module hinzu: Das gesamte Projekt nutzt dann ES-Module. Erstelle anschließend server.js. Ein paar Zeilen genügen für einen funktionierenden Server: Du erstellst die Anwendung, deklarierst eine Route und lauschst auf einem Port.

JAVASCRIPT
import express from "express";

const app = express();

app.get("/", (req, res) => {
  res.send("Kodokon API online");
});

app.listen(3000, () => {
  console.log("http://localhost:3000");
});
server.js - starte es mit node server.js

Eine Route verbindet eine HTTP-Methode und einen Pfad mit einer Funktion. Dynamische Segmente werden mit einem Doppelpunkt deklariert: In /users/:id steht der Wert in req.params.id zur Verfügung. Query-Parameter (?q=node) tauchen in req.query auf. Merke dir den Unterschied: Der Pfad identifiziert die Ressource, der Query-String verfeinert die Anfrage.

JAVASCRIPT
app.get("/users/:id", (req, res) => {
  const { id } = req.params;
  res.json({ id, name: "User " + id });
});

app.get("/search", (req, res) => {
  const { q } = req.query;
  res.json({ query: q ?? "" });
});

Eine Middleware ist eine Funktion, die zwischen dem Eintreffen der Anfrage und deiner Route läuft. Ihre Signatur: (req, res, next). Sie kann req anreichern, direkt antworten oder mit next() weitergeben. Im Kern ist Express nichts anderes als eine Kette von Middleware: Logging, Authentifizierung, Body-Parsing. Diese hier protokolliert jede Anfrage mit ihrer Dauer:

JAVASCRIPT
app.use((req, res, next) => {
  const start = Date.now();
  res.on("finish", () => {
    const ms = Date.now() - start;
    console.log(`${req.method} ${req.url} ${ms}ms`);
  });
  next();
});
Deklariere sie vor deinen Routen, um alles zu protokollieren

Wissenscheck

Stelle sicher, dass du die wichtigsten Punkte dieser Lektion behalten hast.

  1. Eine Route wird mit dem Pfad /users/:id deklariert. Wo liest du den Wert von id?
    • In req.query.id
    • In req.params.id
    • In req.body.id
  2. Was bewirkt der Aufruf von next() in einer Express-Middleware?
    • Er sendet die Antwort an den Client zurück
    • Er gibt an die nächste Middleware oder Route weiter
    • Er startet den Server neu
    • Er bricht die aktuelle Anfrage ab
  3. Was musst du der package.json hinzufügen, um die import-Syntax in Node.js zu nutzen?
    • Die Eigenschaft type mit dem Wert module
    • Die Eigenschaft esm mit dem Wert true
    • Nichts, das ist das Standardverhalten