2011-08-31 11 views
25

lo que me gustaría hacer algo como:Node.js: ¿Cómo hacer algo en todas las solicitudes HTTP en Express?

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

la corriente app.all() requiere un camino, y si me dan, por ejemplo, este / entonces sólo funciona cuando estoy en la página principal, así que no es realmente todo ..

En simple node.js es tan simple como escribir algo después de que creamos el servidor http, y antes de hacer el enrutamiento de la página.

Entonces, ¿cómo hacer esto con express, y cuál es la mejor manera de hacerlo?

Respuesta

39

Express se basa en el middleware Connect.

Las capacidades de enrutamiento de Express son provistas por el router de su aplicación y usted es libre de agregar sus propios middlewares a su aplicación.

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); 

Así de simple.

(PD: Si lo que desea es un poco de la tala es posible considerar el uso de la logger proporcionada por Connect)

+25

O 'app.all ("*", cb)' funcionará igual de bien – Raynos

+0

bueno, que era muy fácil. Estoy usando express con node.js por un tiempo, pero nunca pensé en esto :-) gracias hermano! – Adam

+0

+1 No sabía de esto. Es más Express-ish. –

Cuestiones relacionadas