2011-08-31 5 views
25

quindi vorrei fare qualcosa di simile:Node.js: come fare qualcosa su tutte le richieste HTTP in Express?

app.On_All_Incomeing_Request(function(req, res){ 
    console.log('request received from a client.'); 
}); 

la corrente app.all() richiede un percorso, e se io do ad esempio questo / allora funziona solo quando sono sulla home page, quindi non è davvero tutto ..

In plain node.js è semplice come scrivere qualcosa dopo aver creato il server http e prima di fare il routing della pagina.

Quindi come farlo con express e qual è il modo migliore per farlo?

risposta

39

Express si basa sul middleware Connect.

Le funzionalità di routing di Express sono fornite dallo router della tua app e sei libero di aggiungere il tuo middleware alla tua applicazione.

var app = express.createServer(); 

// Your own super cool function 
var logger = function(req, res, next) { 
    console.log("GOT REQUEST !"); 
    next(); // Passing the request to the next handler in the stack. 
} 

app.configure(function(){ 
    app.use(logger); // Here you add your logger to the stack. 
    app.use(app.router); // The Express routes handler. 
}); 

app.get('/', function(req, res){ 
    res.send('Hello World'); 
}); 

app.listen(3000); 

È così semplice.

(PS: Se si desidera solo un po 'di registrazione si potrebbe considerare l'uso del logger fornito da Connect)

+25

o 'app.all ("*", cb)' funzionerà altrettanto bene – Raynos

+0

hey, che molto è stato facile. Sto usando express con node.js per un po ', ma non ci ho mai pensato :-) grazie fratello! – Adam

+0

+1 Non sapevo di questo. È più Express-ish. –