Creazione di Middleware Personalizzati
In Express.js, è possibile creare funzioni middleware personalizzate utilizzando il metodo app.use(). Queste funzioni accettano tre parametri: req (l'oggetto richiesta), res (l'oggetto risposta) e next (una funzione per passare il controllo al middleware successivo nella catena). Il middleware personalizzato può essere applicato globalmente a tutte le rotte oppure a rotte specifiche specificando un percorso di rotta.
Creazione di Middleware Personalizzato
Ecco un esempio di base di una funzione middleware personalizzata che registra il timestamp e l'URL di ogni richiesta in arrivo:
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 questo esempio, il middleware personalizzato registra il timestamp e l'URL di ciascuna richiesta in arrivo nella console. La funzione next() viene chiamata per passare il controllo al middleware successivo nella pipeline.
Esempio Reale: Combinazione di Middleware Integrati e Personalizzati
Ecco un esempio pratico in cui si utilizza un middleware integrato di Express per analizzare i dati JSON e successivamente si crea un middleware personalizzato per validare tali dati prima di procedere:
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 questo esempio:
- Si utilizza il middleware integrato
express.json()per analizzare i dati JSON in ingresso; - Si crea un middleware personalizzato che verifica se i dati JSON analizzati sono mancanti o vuoti. In tal caso, invia una risposta 400 Bad Request con un messaggio di errore. Se i dati sono validi, chiama
next()per procedere alla route; - La route
/api/datasi aspetta dati JSON validi. Se il middleware personalizzato valida i dati, il gestore della route li riceve e invia una risposta di successo.
Questo esempio dimostra come sia possibile utilizzare sia middleware integrati che personalizzati per validare i dati prima che raggiungano i gestori delle route, garantendo che i dati siano nel formato previsto prima di procedere con l'elaborazione.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Creazione di Middleware Personalizzati
Scorri per mostrare il menu
In Express.js, è possibile creare funzioni middleware personalizzate utilizzando il metodo app.use(). Queste funzioni accettano tre parametri: req (l'oggetto richiesta), res (l'oggetto risposta) e next (una funzione per passare il controllo al middleware successivo nella catena). Il middleware personalizzato può essere applicato globalmente a tutte le rotte oppure a rotte specifiche specificando un percorso di rotta.
Creazione di Middleware Personalizzato
Ecco un esempio di base di una funzione middleware personalizzata che registra il timestamp e l'URL di ogni richiesta in arrivo:
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 questo esempio, il middleware personalizzato registra il timestamp e l'URL di ciascuna richiesta in arrivo nella console. La funzione next() viene chiamata per passare il controllo al middleware successivo nella pipeline.
Esempio Reale: Combinazione di Middleware Integrati e Personalizzati
Ecco un esempio pratico in cui si utilizza un middleware integrato di Express per analizzare i dati JSON e successivamente si crea un middleware personalizzato per validare tali dati prima di procedere:
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 questo esempio:
- Si utilizza il middleware integrato
express.json()per analizzare i dati JSON in ingresso; - Si crea un middleware personalizzato che verifica se i dati JSON analizzati sono mancanti o vuoti. In tal caso, invia una risposta 400 Bad Request con un messaggio di errore. Se i dati sono validi, chiama
next()per procedere alla route; - La route
/api/datasi aspetta dati JSON validi. Se il middleware personalizzato valida i dati, il gestore della route li riceve e invia una risposta di successo.
Questo esempio dimostra come sia possibile utilizzare sia middleware integrati che personalizzati per validare i dati prima che raggiungano i gestori delle route, garantendo che i dati siano nel formato previsto prima di procedere con l'elaborazione.
Grazie per i tuoi commenti!