Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Creazione di Middleware Personalizzati | Sviluppo di Applicazioni Web con Express.js
Sviluppo Backend con Node.js ed Express.js

bookCreazione 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/data si 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.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 9

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 2.56

bookCreazione 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/data si 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.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 9
some-alt