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

Suggested prompts:

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

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