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
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!