Installiere Express und strukturiere deinen ersten Server mit Routen, URL-Parametern und Middleware.
Diese Lektion in Kodokon öffnenDu 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.
mkdir kodokon-api
cd kodokon-api
npm init -y
npm install expressFü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.
import express from "express";
const app = express();
app.get("/", (req, res) => {
res.send("Kodokon API online");
});
app.listen(3000, () => {
console.log("http://localhost:3000");
});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.
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:
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();
});/users/:id deklariert. Wo liest du den Wert von id?req.query.idreq.params.idreq.body.idnext() in einer Express-Middleware?package.json hinzufügen, um die import-Syntax in Node.js zu nutzen?type mit dem Wert moduleesm mit dem Wert true