Lage Egendefinert Mellomvare
Sveip for å vise menyen
I Express.js kan vi lage egendefinerte middleware-funksjoner ved å bruke app.use()-metoden. Disse funksjonene tar tre parametere: req (forespørselsobjektet), res (responsobjektet) og next (en funksjon for å sende kontrollen videre til neste middleware i kjeden). Egendefinert middleware kan brukes globalt på alle ruter eller på spesifikke ruter ved å angi en rutevei.
Lage egendefinert middleware
Her er et grunnleggende eksempel på en egendefinert middleware-funksjon som logger tidsstempel og URL for hver innkommende forespørsel:
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 eksemplet logger den egendefinerte middleware-funksjonen tidsstempel og URL for hver innkommende forespørsel til konsollen. next()-funksjonen kalles for å sende kontrollen videre til neste middleware i kjeden.
Eksempel fra virkeligheten: Kombinere innebygd og egendefinert middleware
Her er et praktisk eksempel der vi bruker en innebygd Express-middleware for å tolke JSON-data og deretter lager en egendefinert middleware for å validere disse dataene før vi går videre:
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 eksemplet:
- Vi bruker den innebygde middleware-funksjonen
express.json()for å tolke innkommende JSON-data; - Vi lager en egendefinert middleware som sjekker om de tolkte JSON-dataene mangler eller er tomme. Hvis de gjør det, sendes et 400 Bad Request-svar med en feilmelding. Hvis dataene er gyldige, kalles
next()for å gå videre til ruten; - Ruten
/api/dataforventer gyldige JSON-data. Hvis den egendefinerte middleware-funksjonen validerer dataene, mottar rutehåndtereren dem og sender et suksessvar.
-
Linje 1: importerer Express.js-rammeverket;
-
Linje 2: oppretter en Express-applikasjonsinstans ved å kalle
express(). Det resulterendeapp-objektet brukes til å definere ruter, mellomvare og håndtere HTTP-forespørsler; -
Linje 5: aktiverer den innebygde
express.json()-mellomvaren. Denne mellomvaren parser automatisk innkommende JSON-forespørselskropper og gjør dataene tilgjengelige viareq.body; -
Linje 8-18: definerer egendefinert mellomvare som brukes til å validere innkommende JSON-data;
-
sjekker om
req.bodyinneholder data;- returnerer et
400 Bad Request-svar hvis forespørselskroppen mangler eller er tom; - kaller
next()hvis JSON-dataene er gyldige og fortsetter til neste mellomvare eller rutehåndterer;
- returnerer et
-
Linje 21-24: definerer en
POST-rute på/api/data;- henter de innsendte JSON-dataene fra
req.body; - returnerer et
200 OK-svar som inneholder en bekreftelsesmelding og de mottatte dataene;
- henter de innsendte JSON-dataene fra
-
Linje 26-28: starter Express-applikasjonen og begynner å lytte etter forespørsler på port
3000.
Dette eksemplet viser hvordan vi kan bruke både innebygd og egendefinert mellomvare for å validere data før de når rutehåndtererne, og sikrer at dataene har forventet format før videre behandling.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår