2012-10-04 12 views
19

Sto cercando qualche documentazione sulla funzione app.get di express.js.Documentazione app.get Express

app.get(
    '/path', 
    middleware(), 
    function(req, res) { 
     res.redirect('/'); 
    } 
); 

L'esempio sopra prende tre parametri. I documenti normali mostrano solo due. Sono interessato a ciò che questo parametro medio fa e come usarlo.

+3

è possibile impilare le funzioni di middleware: app.get ('/ account', fn1, fn2, fn3, function (err, req, res) {}); – chovy

+1

@chovy thx per quella semplice risposta. Buon anno 2015! –

risposta

23

I documenti per questo fanno parte dello app.METHODdocumentation, dove get è uno dei metodi HTTP supportati.

Il secondo parametro facoltativo è chiamato middleware (ed è possibile passare una serie di funzioni middleware). Questa è una funzione chiamata prima del callback del terzo parametro (il gestore del percorso effettivo) e la responsabilità di una funzione middleware è quella di consentire al codice di seguire il principio DRY (non ripeterlo).

Esempio di funzioni middleware sono i controlli delle autorizzazioni, le convalide di accesso, la convalida delle sessioni (se l'utente non è connesso, portarlo a una pagina di accesso) e così via.

Poiché diverse route potrebbero desiderare lo stesso comportamento, si utilizza un middleware in modo che non sia necessario scrivere lo stesso codice più volte.

+0

Voglio fare alcune funzioni di middleware ma non riesco davvero a trovare i documenti su come funzionano e quali parametri usano. Ho trovato un codice di esempio che ha una funzione che richiede 'req, res, next' come argomenti, ma non sono sicuro di come usarlo. – ThomasReggi

+1

Le funzioni del middleware prendono sempre questi tre parametri: l'oggetto 'request', l'oggetto' response' e ​​il callback 'next' da chiamare quando il middleware è completo. Passa 'next' a Error object on error, o nessun parametro per passare il controllo al callback successivo. – JohnnyHK

+0

Conoscete un esempio di middleware di un altro metodo, che node/express usa per delegare parametri sotto un percorso. Ad esempio route '/ login? Age = 23' da'/login? Name = thomas'? Potrei davvero usare un esempio di questo. So che potrei usare un condizionale solo se 'req.query.age' e' req.query.name' si basano su se sono 'indefiniti 'o no, ma questo non è molto sofisticato. Il middleware è la soluzione? – ThomasReggi