Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Benutzerdefinierte Middleware | Express.js Framework
Backend-Entwicklung mit Node.js und Express.js

book
Benutzerdefinierte Middleware

In Express.js können wir benutzerdefinierte Middleware-Funktionen mit der Methode app.use() erstellen. Diese Funktionen nehmen drei Parameter entgegen: req (das Anforderungsobjekt), res (das Antwortobjekt) und next (eine Funktion, um die Kontrolle an die nächste Middleware in der Kette zu übergeben). Benutzerdefinierte Middleware kann global auf alle Routen oder auf spezifische Routen angewendet werden, indem ein Routenpfad angegeben wird.

Erstellen von benutzerdefinierter Middleware

Hier ist ein einfaches Beispiel für eine benutzerdefinierte Middleware-Funktion, die den Zeitstempel und die URL jeder eingehenden Anfrage protokolliert:

js
app.use((req, res, next) => {
const timestamp = new Date().toISOString();
const url = req.url;
console.log(`[${timestamp}] ${url}`);
next(); // Pass control to the next middleware.
});

In diesem Beispiel protokolliert die benutzerdefinierte Middleware den Zeitstempel und die URL jeder eingehenden Anfrage in der Konsole. Die Funktion next() wird aufgerufen, um die Kontrolle an die nächste Middleware in der Pipeline zu übergeben.

Praxisbeispiel: Kombination von eingebauter und benutzerdefinierter Middleware

Hier ist ein praktisches Beispiel, bei dem wir eine eingebaute Express-Middleware verwenden, um JSON-Daten zu parsen, und dann eine benutzerdefinierte Middleware erstellen, um diese Daten vor der Weiterverarbeitung zu validieren:

js
const express = require('express');
const app = express();

// Use built-in middleware to parse JSON data.
app.use(express.json());

// Custom middleware to validate JSON data.
app.use((req, res, next) => {
const jsonData = req.body;

if (!jsonData || Object.keys(jsonData).length === 0) {
// If the JSON data is missing or empty, send an error response.
return res.status(400).json({ error: 'Invalid JSON data' });
}

// Data is valid; proceed to the next middleware or route.
next();
});

// Route that expects valid JSON data.
app.post('/api/data', (req, res) => {
const jsonData = req.body;
res.status(200).json({ message: 'Data received', data: jsonData });
});

app.listen(3000, () => {
console.log('Server is running on port 3000.');
});

In diesem Beispiel:

  • Wir verwenden die eingebaute Middleware express.json(), um eingehende JSON-Daten zu parsen;

  • Wir erstellen eine benutzerdefinierte Middleware, die überprüft, ob die geparsten JSON-Daten fehlen oder leer sind. Wenn dies der Fall ist, sendet sie eine 400 Bad Request-Antwort mit einer Fehlermeldung. Wenn die Daten gültig sind, ruft sie next() auf, um zur Route fortzufahren;

  • Die /api/data-Route erwartet gültige JSON-Daten. Wenn die benutzerdefinierte Middleware die Daten validiert, empfängt der Routen-Handler sie und sendet eine Erfolgsantwort.

Dieses Beispiel zeigt, wie wir sowohl eingebaute als auch benutzerdefinierte Middleware verwenden können, um Daten zu validieren, bevor sie unsere Routen-Handler erreichen, und sicherzustellen, dass die Daten im erwarteten Format vorliegen, bevor sie weiterverarbeitet werden.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 9

Fragen Sie AI

expand
ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt