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 (begärandeobjektet), res (svarsobjektet) och next (en funktion för att skicka kontrollen vidare till nästa middleware i kedjan). Egenutvecklad 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 begäran:
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 begäran till konsolen. Funktionen next() anropas för att skicka kontrollen vidare till nästa middleware i kedjan.
Exempel från verkligheten: Kombinera inbyggd och anpassad middleware
Här är ett praktiskt exempel där vi använder en inbyggd Express-middleware för att tolka JSON-data och sedan skapar en anpassad middleware för att validera dessa 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 anpassad 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 routen; - Routen
/api/dataförväntar sig giltig JSON-data. Om den anpassade middleware-funktionen validerar datan, tar route-hanteraren emot den och skickar ett lyckat svar.
Detta exempel visar hur vi kan använda både inbyggd och anpassad middleware för att validera data innan den når våra route-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
Can you explain how to apply middleware to specific routes only?
What are some other use cases for custom middleware in Express.js?
How does the order of middleware affect request handling in Express.js?
Awesome!
Completion rate improved to 2.56
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 (begärandeobjektet), res (svarsobjektet) och next (en funktion för att skicka kontrollen vidare till nästa middleware i kedjan). Egenutvecklad 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 begäran:
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 begäran till konsolen. Funktionen next() anropas för att skicka kontrollen vidare till nästa middleware i kedjan.
Exempel från verkligheten: Kombinera inbyggd och anpassad middleware
Här är ett praktiskt exempel där vi använder en inbyggd Express-middleware för att tolka JSON-data och sedan skapar en anpassad middleware för att validera dessa 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 anpassad 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 routen; - Routen
/api/dataförväntar sig giltig JSON-data. Om den anpassade middleware-funktionen validerar datan, tar route-hanteraren emot den och skickar ett lyckat svar.
Detta exempel visar hur vi kan använda både inbyggd och anpassad middleware för att validera data innan den når våra route-hanterare, vilket säkerställer att datan har rätt format innan den behandlas vidare.
Tack för dina kommentarer!