Aangepaste Middleware Maken
Veeg om het menu te tonen
In Express.js kunnen we aangepaste middlewarefuncties maken met behulp van de app.use()-methode. Deze functies nemen drie parameters: req (het request-object), res (het response-object) en next (een functie om de controle door te geven aan de volgende middleware in de keten). Aangepaste middleware kan globaal op alle routes worden toegepast of op specifieke routes door een routepad op te geven.
Aangepaste Middleware Maken
Hier is een eenvoudig voorbeeld van een aangepaste middlewarefunctie die de timestamp en URL van elk binnenkomend verzoek logt:
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 dit voorbeeld logt de aangepaste middleware de timestamp en URL van elk binnenkomend verzoek naar de console. De functie next() wordt aangeroepen om de controle door te geven aan de volgende middleware in de pipeline.
Praktijkvoorbeeld: Combineren van Ingebouwde en Aangepaste Middleware
Hier is een praktisch voorbeeld waarbij we een ingebouwde Express-middleware gebruiken om JSON-data te parsen en vervolgens een aangepaste middleware maken om die data te valideren voordat we doorgaan:
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 dit voorbeeld:
- We gebruiken de ingebouwde middleware
express.json()om binnenkomende JSON-data te parsen; - We maken een aangepaste middleware die controleert of de geparste JSON-data ontbreekt of leeg is. Als dat het geval is, wordt een 400 Bad Request-respons met een foutmelding verstuurd. Als de data geldig is, wordt
next()aangeroepen om door te gaan naar de route; - De
/api/data-route verwacht geldige JSON-data. Als de aangepaste middleware de data valideert, ontvangt de route handler deze en stuurt een succesrespons terug.
-
Regel 1: importeert het Express.js-framework;
-
Regel 2: maakt een Express-applicatie-instantie aan door
express()aan te roepen. Het resulterendeapp-object wordt gebruikt om routes, middleware en HTTP-verzoeken te definiëren en af te handelen; -
Regel 5: activeert de ingebouwde
express.json()-middleware. Deze middleware parseert automatisch inkomende JSON-verzoeksbodies en maakt de gegevens beschikbaar viareq.body; -
Regels 8-18: definiëren aangepaste middleware die wordt gebruikt om inkomende JSON-gegevens te valideren;
-
controleert of
req.bodygegevens bevat;- retourneert een
400 Bad Request-respons als de request body ontbreekt of leeg is; - roept
next()aan als de JSON-gegevens geldig zijn en gaat verder naar de volgende middleware of route handler;
- retourneert een
-
Regels 21-24: definiëren een
POST-route op/api/data;- haalt de ingediende JSON-gegevens op uit
req.body; - retourneert een
200 OK-respons met een bevestigingsbericht en de ontvangen gegevens;
- haalt de ingediende JSON-gegevens op uit
-
Regels 26-28: starten de Express-applicatie en beginnen met luisteren naar verzoeken op poort
3000.
Dit voorbeeld laat zien hoe zowel ingebouwde als aangepaste middleware gebruikt kan worden om gegevens te valideren voordat deze de route handlers bereiken, zodat de gegevens het verwachte formaat hebben voordat ze verder worden verwerkt.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Aangepaste Middleware Maken
In Express.js kunnen we aangepaste middlewarefuncties maken met behulp van de app.use()-methode. Deze functies nemen drie parameters: req (het request-object), res (het response-object) en next (een functie om de controle door te geven aan de volgende middleware in de keten). Aangepaste middleware kan globaal op alle routes worden toegepast of op specifieke routes door een routepad op te geven.
Aangepaste Middleware Maken
Hier is een eenvoudig voorbeeld van een aangepaste middlewarefunctie die de timestamp en URL van elk binnenkomend verzoek logt:
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 dit voorbeeld logt de aangepaste middleware de timestamp en URL van elk binnenkomend verzoek naar de console. De functie next() wordt aangeroepen om de controle door te geven aan de volgende middleware in de pipeline.
Praktijkvoorbeeld: Combineren van Ingebouwde en Aangepaste Middleware
Hier is een praktisch voorbeeld waarbij we een ingebouwde Express-middleware gebruiken om JSON-data te parsen en vervolgens een aangepaste middleware maken om die data te valideren voordat we doorgaan:
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 dit voorbeeld:
- We gebruiken de ingebouwde middleware
express.json()om binnenkomende JSON-data te parsen; - We maken een aangepaste middleware die controleert of de geparste JSON-data ontbreekt of leeg is. Als dat het geval is, wordt een 400 Bad Request-respons met een foutmelding verstuurd. Als de data geldig is, wordt
next()aangeroepen om door te gaan naar de route; - De
/api/data-route verwacht geldige JSON-data. Als de aangepaste middleware de data valideert, ontvangt de route handler deze en stuurt een succesrespons terug.
-
Regel 1: importeert het Express.js-framework;
-
Regel 2: maakt een Express-applicatie-instantie aan door
express()aan te roepen. Het resulterendeapp-object wordt gebruikt om routes, middleware en HTTP-verzoeken te definiëren en af te handelen; -
Regel 5: activeert de ingebouwde
express.json()-middleware. Deze middleware parseert automatisch inkomende JSON-verzoeksbodies en maakt de gegevens beschikbaar viareq.body; -
Regels 8-18: definiëren aangepaste middleware die wordt gebruikt om inkomende JSON-gegevens te valideren;
-
controleert of
req.bodygegevens bevat;- retourneert een
400 Bad Request-respons als de request body ontbreekt of leeg is; - roept
next()aan als de JSON-gegevens geldig zijn en gaat verder naar de volgende middleware of route handler;
- retourneert een
-
Regels 21-24: definiëren een
POST-route op/api/data;- haalt de ingediende JSON-gegevens op uit
req.body; - retourneert een
200 OK-respons met een bevestigingsbericht en de ontvangen gegevens;
- haalt de ingediende JSON-gegevens op uit
-
Regels 26-28: starten de Express-applicatie en beginnen met luisteren naar verzoeken op poort
3000.
Dit voorbeeld laat zien hoe zowel ingebouwde als aangepaste middleware gebruikt kan worden om gegevens te valideren voordat deze de route handlers bereiken, zodat de gegevens het verwachte formaat hebben voordat ze verder worden verwerkt.
Bedankt voor je feedback!