Skapa Anpassad Mellanprogramvara
Svep för att visa menyn
I Express.js kan vi skapa egna middleware-funktioner med hjälp av metoden app.use(). Dessa funktioner tar tre parametrar: req (request-objektet), res (response-objektet) och next (en funktion för att skicka kontrollen vidare till nästa middleware i kedjan). Egna middleware kan tillämpas globalt på alla rutter eller på specifika rutter genom att ange en ruttsökväg.
Skapa egen middleware
Här är ett grundläggande exempel på en egen middleware-funktion som loggar tidsstämpel och URL för varje inkommande förfrågan:
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 detta exempel loggar den egna middleware-funktionen tidsstämpel och URL för varje inkommande förfrågan till konsolen. Funktionen next() anropas för att skicka kontrollen vidare till nästa middleware i kedjan.
Exempel från verkligheten: Kombinera inbyggd och egen middleware
Här är ett praktiskt exempel där vi använder en inbyggd middleware i Express för att tolka JSON-data och sedan skapar en egen middleware för att validera denna data innan vi går vidare:
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 detta exempel:
- Vi använder den inbyggda middleware-funktionen
express.json()för att tolka inkommande JSON-data; - Vi skapar en egen middleware som kontrollerar om den tolkade JSON-datan saknas eller är tom. Om så är fallet skickas ett 400 Bad Request-svar med ett felmeddelande. Om datan är giltig anropas
next()för att gå vidare till rutten; - Routen
/api/dataförväntar sig giltig JSON-data. Om den egna middleware-funktionen validerar datan tar route-hanteraren emot den och skickar ett lyckat svar.
-
Rad 1: importerar Express.js-ramverket;
-
Rad 2: skapar en Express-applikationsinstans genom att anropa
express(). Det resulterandeapp-objektet används för att definiera rutter, middleware och hantera HTTP-förfrågningar; -
Rad 5: aktiverar den inbyggda middleware-funktionen
express.json(). Denna middleware tolkar automatiskt inkommande JSON-begäranden och gör datan tillgänglig viareq.body; -
Raderna 8-18: definierar anpassad middleware som används för att validera inkommande JSON-data;
-
kontrollerar om
req.bodyinnehåller data;- returnerar ett
400 Bad Request-svar om begärandekroppen saknas eller är tom; - anropar
next()om JSON-datan är giltig och fortsätter till nästa middleware eller rutt-hanterare;
- returnerar ett
-
Raderna 21-24: definierar en
POST-rutt på/api/data;- hämtar den inskickade JSON-datan från
req.body; - returnerar ett
200 OK-svar med ett bekräftelsemeddelande och den mottagna datan;
- hämtar den inskickade JSON-datan från
-
Raderna 26-28: startar Express-applikationen och börjar lyssna efter förfrågningar på port
3000.
Detta exempel visar hur både inbyggd och anpassad middleware kan användas för att validera data innan den når våra rutt-hanterare, vilket säkerställer att datan har rätt format innan den behandlas vidare.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Skapa Anpassad Mellanprogramvara
I Express.js kan vi skapa egna middleware-funktioner med hjälp av metoden app.use(). Dessa funktioner tar tre parametrar: req (request-objektet), res (response-objektet) och next (en funktion för att skicka kontrollen vidare till nästa middleware i kedjan). Egna middleware kan tillämpas globalt på alla rutter eller på specifika rutter genom att ange en ruttsökväg.
Skapa egen middleware
Här är ett grundläggande exempel på en egen middleware-funktion som loggar tidsstämpel och URL för varje inkommande förfrågan:
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 detta exempel loggar den egna middleware-funktionen tidsstämpel och URL för varje inkommande förfrågan till konsolen. Funktionen next() anropas för att skicka kontrollen vidare till nästa middleware i kedjan.
Exempel från verkligheten: Kombinera inbyggd och egen middleware
Här är ett praktiskt exempel där vi använder en inbyggd middleware i Express för att tolka JSON-data och sedan skapar en egen middleware för att validera denna data innan vi går vidare:
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 detta exempel:
- Vi använder den inbyggda middleware-funktionen
express.json()för att tolka inkommande JSON-data; - Vi skapar en egen middleware som kontrollerar om den tolkade JSON-datan saknas eller är tom. Om så är fallet skickas ett 400 Bad Request-svar med ett felmeddelande. Om datan är giltig anropas
next()för att gå vidare till rutten; - Routen
/api/dataförväntar sig giltig JSON-data. Om den egna middleware-funktionen validerar datan tar route-hanteraren emot den och skickar ett lyckat svar.
-
Rad 1: importerar Express.js-ramverket;
-
Rad 2: skapar en Express-applikationsinstans genom att anropa
express(). Det resulterandeapp-objektet används för att definiera rutter, middleware och hantera HTTP-förfrågningar; -
Rad 5: aktiverar den inbyggda middleware-funktionen
express.json(). Denna middleware tolkar automatiskt inkommande JSON-begäranden och gör datan tillgänglig viareq.body; -
Raderna 8-18: definierar anpassad middleware som används för att validera inkommande JSON-data;
-
kontrollerar om
req.bodyinnehåller data;- returnerar ett
400 Bad Request-svar om begärandekroppen saknas eller är tom; - anropar
next()om JSON-datan är giltig och fortsätter till nästa middleware eller rutt-hanterare;
- returnerar ett
-
Raderna 21-24: definierar en
POST-rutt på/api/data;- hämtar den inskickade JSON-datan från
req.body; - returnerar ett
200 OK-svar med ett bekräftelsemeddelande och den mottagna datan;
- hämtar den inskickade JSON-datan från
-
Raderna 26-28: startar Express-applikationen och börjar lyssna efter förfrågningar på port
3000.
Detta exempel visar hur både inbyggd och anpassad middleware kan användas för att validera data innan den når våra rutt-hanterare, vilket säkerställer att datan har rätt format innan den behandlas vidare.
Tack för dina kommentarer!