Erstellung Benutzerdefinierter Middleware
In Express.js können benutzerdefinierte Middleware-Funktionen mit der Methode app.use() erstellt werden. Diese Funktionen nehmen drei Parameter entgegen: req (das Request-Objekt), res (das Response-Objekt) und next (eine Funktion, um die Kontrolle an die nächste Middleware in der Kette zu übergeben). Benutzerdefinierte Middleware kann global für alle Routen oder für bestimmte Routen durch Angabe eines Routenpfads angewendet werden.
Erstellen von benutzerdefinierter Middleware
Nachfolgend ein einfaches Beispiel für eine benutzerdefinierte Middleware-Funktion, die den Zeitstempel und die URL jeder eingehenden Anfrage protokolliert:
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 eingebauten und benutzerdefinierten Middleware
Hier ein praxisnahes Beispiel, in dem eine eingebaute Express-Middleware zum Parsen von JSON-Daten verwendet wird und anschließend eine benutzerdefinierte Middleware zur Validierung dieser Daten erstellt wird:
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:
- Die eingebaute Middleware
express.json()wird verwendet, um eingehende JSON-Daten zu parsen; - Eine benutzerdefinierte Middleware prüft, ob die geparsten JSON-Daten fehlen oder leer sind. Ist dies der Fall, wird eine 400 Bad Request-Antwort mit einer Fehlermeldung gesendet. Sind die Daten gültig, wird mit
next()zur nächsten Middleware oder Route fortgefahren; - Die Route
/api/dataerwartet gültige JSON-Daten. Wenn die benutzerdefinierte Middleware die Daten validiert, erhält der Routen-Handler diese und sendet eine Erfolgsantwort.
Dieses Beispiel zeigt, wie sowohl eingebaute als auch benutzerdefinierte Middleware verwendet werden können, um Daten zu validieren, bevor sie die Routen-Handler erreichen. So wird sichergestellt, dass die Daten vor der weiteren Verarbeitung das erwartete Format haben.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 2.56
Erstellung Benutzerdefinierter Middleware
Swipe um das Menü anzuzeigen
In Express.js können benutzerdefinierte Middleware-Funktionen mit der Methode app.use() erstellt werden. Diese Funktionen nehmen drei Parameter entgegen: req (das Request-Objekt), res (das Response-Objekt) und next (eine Funktion, um die Kontrolle an die nächste Middleware in der Kette zu übergeben). Benutzerdefinierte Middleware kann global für alle Routen oder für bestimmte Routen durch Angabe eines Routenpfads angewendet werden.
Erstellen von benutzerdefinierter Middleware
Nachfolgend ein einfaches Beispiel für eine benutzerdefinierte Middleware-Funktion, die den Zeitstempel und die URL jeder eingehenden Anfrage protokolliert:
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 eingebauten und benutzerdefinierten Middleware
Hier ein praxisnahes Beispiel, in dem eine eingebaute Express-Middleware zum Parsen von JSON-Daten verwendet wird und anschließend eine benutzerdefinierte Middleware zur Validierung dieser Daten erstellt wird:
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:
- Die eingebaute Middleware
express.json()wird verwendet, um eingehende JSON-Daten zu parsen; - Eine benutzerdefinierte Middleware prüft, ob die geparsten JSON-Daten fehlen oder leer sind. Ist dies der Fall, wird eine 400 Bad Request-Antwort mit einer Fehlermeldung gesendet. Sind die Daten gültig, wird mit
next()zur nächsten Middleware oder Route fortgefahren; - Die Route
/api/dataerwartet gültige JSON-Daten. Wenn die benutzerdefinierte Middleware die Daten validiert, erhält der Routen-Handler diese und sendet eine Erfolgsantwort.
Dieses Beispiel zeigt, wie sowohl eingebaute als auch benutzerdefinierte Middleware verwendet werden können, um Daten zu validieren, bevor sie die Routen-Handler erreichen. So wird sichergestellt, dass die Daten vor der weiteren Verarbeitung das erwartete Format haben.
Danke für Ihr Feedback!