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:
js912345678app.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:
js9912345678910111213141516171819202122232425262728const 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.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen