Oprettelse af Brugerdefineret Middleware
Stryg for at vise menuen
I Express.js kan vi oprette brugerdefinerede middleware-funktioner ved hjælp af app.use()-metoden. Disse funktioner tager tre parametre: req (request-objektet), res (response-objektet) og next (en funktion til at videregive kontrollen til den næste middleware i kæden). Brugerdefineret middleware kan anvendes globalt på alle ruter eller på specifikke ruter ved at angive en rute-sti.
Oprettelse af brugerdefineret middleware
Her er et grundlæggende eksempel på en brugerdefineret middleware-funktion, der logger tidsstemplet og URL'en for hver indkommende forespørgsel:
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.
});
I dette eksempel logger den brugerdefinerede middleware tidsstemplet og URL'en for hver indkommende forespørgsel til konsollen. Funktionen next() kaldes for at videregive kontrollen til den næste middleware i rækken.
Virkelighedsnært eksempel: Kombinering af indbygget og brugerdefineret middleware
Her er et praktisk eksempel, hvor vi bruger en indbygget Express-middleware til at parse JSON-data og derefter opretter en brugerdefineret middleware til at validere disse data, før vi fortsætter:
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.');
});
I dette eksempel:
- Vi bruger den indbyggede middleware
express.json()til at parse indkommende JSON-data; - Vi opretter en brugerdefineret middleware, der tjekker, om de parset JSON-data mangler eller er tomme. Hvis de er det, sendes et 400 Bad Request-svar med en fejlbesked. Hvis dataene er gyldige, kaldes
next()for at fortsætte til ruten; - Ruten
/api/dataforventer gyldige JSON-data. Hvis den brugerdefinerede middleware validerer dataene, modtager route handleren dem og sender et succes-svar.
-
Linje 1: importerer Express.js-rammeværket;
-
Linje 2: opretter en Express-applikationsinstans ved at kalde
express(). Det resulterendeapp-objekt bruges til at definere ruter, middleware og håndtere HTTP-forespørgsler; -
Linje 5: aktiverer den indbyggede
express.json()middleware. Denne middleware parser automatisk indkommende JSON-request bodies og gør dataene tilgængelige viareq.body; -
Linje 8-18: definerer brugerdefineret middleware, der bruges til at validere indkommende JSON-data;
-
tjekker om
req.bodyindeholder data;- returnerer et
400 Bad Request-svar, hvis request body mangler eller er tom; - kalder
next()hvis JSON-dataene er gyldige og fortsætter til næste middleware eller route handler;
- returnerer et
-
Linje 21-24: definerer en
POST-rute på/api/data;- henter de indsendte JSON-data fra
req.body; - returnerer et
200 OK-svar med en bekræftelsesbesked og de modtagne data;
- henter de indsendte JSON-data fra
-
Linje 26-28: starter Express-applikationen og begynder at lytte efter forespørgsler på port
3000.
Dette eksempel demonstrerer, hvordan både indbygget og brugerdefineret middleware kan bruges til at validere data, før de når vores route handlers, hvilket sikrer at dataene har det forventede format, inden de behandles videre.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Oprettelse af Brugerdefineret Middleware
I Express.js kan vi oprette brugerdefinerede middleware-funktioner ved hjælp af app.use()-metoden. Disse funktioner tager tre parametre: req (request-objektet), res (response-objektet) og next (en funktion til at videregive kontrollen til den næste middleware i kæden). Brugerdefineret middleware kan anvendes globalt på alle ruter eller på specifikke ruter ved at angive en rute-sti.
Oprettelse af brugerdefineret middleware
Her er et grundlæggende eksempel på en brugerdefineret middleware-funktion, der logger tidsstemplet og URL'en for hver indkommende forespørgsel:
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.
});
I dette eksempel logger den brugerdefinerede middleware tidsstemplet og URL'en for hver indkommende forespørgsel til konsollen. Funktionen next() kaldes for at videregive kontrollen til den næste middleware i rækken.
Virkelighedsnært eksempel: Kombinering af indbygget og brugerdefineret middleware
Her er et praktisk eksempel, hvor vi bruger en indbygget Express-middleware til at parse JSON-data og derefter opretter en brugerdefineret middleware til at validere disse data, før vi fortsætter:
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.');
});
I dette eksempel:
- Vi bruger den indbyggede middleware
express.json()til at parse indkommende JSON-data; - Vi opretter en brugerdefineret middleware, der tjekker, om de parset JSON-data mangler eller er tomme. Hvis de er det, sendes et 400 Bad Request-svar med en fejlbesked. Hvis dataene er gyldige, kaldes
next()for at fortsætte til ruten; - Ruten
/api/dataforventer gyldige JSON-data. Hvis den brugerdefinerede middleware validerer dataene, modtager route handleren dem og sender et succes-svar.
-
Linje 1: importerer Express.js-rammeværket;
-
Linje 2: opretter en Express-applikationsinstans ved at kalde
express(). Det resulterendeapp-objekt bruges til at definere ruter, middleware og håndtere HTTP-forespørgsler; -
Linje 5: aktiverer den indbyggede
express.json()middleware. Denne middleware parser automatisk indkommende JSON-request bodies og gør dataene tilgængelige viareq.body; -
Linje 8-18: definerer brugerdefineret middleware, der bruges til at validere indkommende JSON-data;
-
tjekker om
req.bodyindeholder data;- returnerer et
400 Bad Request-svar, hvis request body mangler eller er tom; - kalder
next()hvis JSON-dataene er gyldige og fortsætter til næste middleware eller route handler;
- returnerer et
-
Linje 21-24: definerer en
POST-rute på/api/data;- henter de indsendte JSON-data fra
req.body; - returnerer et
200 OK-svar med en bekræftelsesbesked og de modtagne data;
- henter de indsendte JSON-data fra
-
Linje 26-28: starter Express-applikationen og begynder at lytte efter forespørgsler på port
3000.
Dette eksempel demonstrerer, hvordan både indbygget og brugerdefineret middleware kan bruges til at validere data, før de når vores route handlers, hvilket sikrer at dataene har det forventede format, inden de behandles videre.
Tak for dine kommentarer!