2011-08-31 13 views
25

Więc chciałbym zrobić coś takiego:Node.js: Jak zrobić coś we wszystkich żądaniach HTTP w Expressie?

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

obecny app.all() wymaga ścieżkę, a jeśli dam na przykład ten / to działa tylko wtedy, gdy jestem na stronie głównej, więc to naprawdę nie wszystko ..

W prostym pliku node.js jest to tak proste, jak pisanie wszystkiego po utworzeniu serwera http, a przed wykonaniem routingu strony.

Jak to zrobić z ekspresowym i jaki jest najlepszy sposób na zrobienie tego?

Odpowiedz

39

Express jest oparty na oprogramowaniu pośrednim Connect.

Możliwości routingu Express są dostarczane przez aplikację router, a Ty możesz dodać swoje własne oprogramowanie pośrednie do swojej aplikacji.

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

To takie proste.

(PS: Jeśli chcesz tylko trochę rejestrowanie można rozważyć użycie logger dostarczonego przez połączenie)

+25

lub 'app.all („*”, cb)' będzie działać równie dobrze – Raynos

+0

hej, to było bardzo łatwo. Używam express z node.js przez jakiś czas, ale nigdy nie myślałem o tym :-) dzięki bro! – Adam

+0

+1 Nie wiedziałem o tym. Jest bardziej ekspresowy. –

Powiązane problemy