Questa traduzione fornita da StrongLoop / IBM.
Ă possibile che questo documento non sia aggiornato poichĂŠ la documentazione è in inglese. Per gli ultimi aggiornamenti, fare riferimento alla documentazione in inglese.Le funzioni middleware sono funzioni con accesso allâoggetto richiesta (req
), allâoggetto risposta (res
) e alla successiva funzione middleware nel ciclo richiesta-risposta dellâapplicazione. La successiva funzione middleware viene comunemente denotata da una variabile denominata next
.
Le funzioni middleware possono eseguire le attivitĂ elencate di seguito:
Se la funzione middleware corrente non termina il ciclo richiesta-risposta, deve richiamare next()
per passare il controllo alla successiva funzione middleware. Altrimenti, la richiesta verrĂ lasciata in sospeso.
I seguenti esempi mostrano gli elementi di una chiamata alla funzione middleware:
Metodo HTTP per cui si applica la funzione middleware.
Percorso (route) per cui si applica la funzione middleware.
La funzione middleware.
Argomento di callback nella funzione middleware, denominata per convenzione "next".
Argomento risposta HTTP nella funzione middleware, denominato "res" per convenzione.
Argomento richiesta HTTP nella funzione middleware, denominato "req" per convenzione.
|
Ecco un esempio di una semplice applicazione Express âHello Worldâ, per cui si definiranno due funzioni middleware:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000);
Ecco un semplice esempio di una funzione middleware, denominata âmyLoggerâ. Questa funzione stampa semplicemente la dicitura âLOGGEDâ quando una richiesta allâapplicazione la attraversa. La funzione middleware è assegnata ad una variabile denominata myLogger
.
var myLogger = function (req, res, next) {
console.log('LOGGED');
next();
};
Si noti la chiamata precedente a next()
. Richiamando questa funzione si richiama la successiva funzione middleware nellâapplicazione.
La funzione next()
non fa parte dellâAPI Express o Node.js, ma è il terzo argomento trasmesso alla funzione middleware. La funzione next()
potrebbe essere denominata in qualsiasi modo, ma per convenzione viene sempre denominata ânextâ. Per evitare confusione, utilizzare sempre questa convenzione.
Per caricare la funzione middleware, richiamare app.use()
, specificando la funzione middleware.
Ad esempio, il seguente codice carica la funzione middleware myLogger
prima della route al percorso root (/).
var express = require('express');
var app = express();
var myLogger = function (req, res, next) {
console.log('LOGGED');
next();
};
app.use(myLogger);
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000);
Ogni volta che unâapplicazione riceve una richiesta, viene stampato il messaggio âLOGGEDâ sul terminale.
Lâordine di caricamento del middleware è importante: le funzioni middleware che vengono caricate per prime vengono anche eseguite per prime.
Se myLogger
viene caricato dopo la route sul percorso root, la richiesta non lo raggiunge mai e lâapplicazione non stampa âLOGGEDâ, poichĂŠ lâhandler di route del percorso root termina il ciclo richiesta-risposta.
La funzione middleware myLogger
stampa semplicemente un messaggio, successivamente passa la richiesta alla successiva funzione middleware nello stack chiamando la funzione next()
.
Nel successivo esempio viene aggiunta una proprietĂ denominata requestTime
allâoggetto richiesta. Questa funzione middleware verrĂ denominata ârequestTimeâ.
var requestTime = function (req, res, next) {
req.requestTime = Date.now();
next();
};
Lâapplicazione utilizza ora la funzione middleware requestTime
. Inoltre, la funzione di callback della route percorso root utilizza la proprietĂ che la funzione middleware aggiunge a req
(lâoggetto richiesta).
var express = require('express');
var app = express();
var requestTime = function (req, res, next) {
req.requestTime = Date.now();
next();
};
app.use(requestTime);
app.get('/', function (req, res) {
var responseText = 'Hello World!
';
responseText += 'Requested at: ' + req.requestTime + '';
res.send(responseText);
});
app.listen(3000);
Quando si effettua una richiesta al root dellâapplicazione, lâapplicazione mostra la cronologia data e ora della richiesta nel browser.
PoichĂŠ si dispone dellâaccesso allâoggetto richiesta, lâoggetto risposta, la successiva funzione middleware nello stack e lâAPI Node.js completo, le possibilitĂ con le funzioni middleware sono infinite.
Per ulteriori informazioni sul middleware Express, consultare: Utilizzo del middleware Express.