だから私は次のようなことをしたいと思います:
_app.On_All_Incoming_Request(function(req, res){
console.log('request received from a client.');
});
_
現在のapp.all()
にはパスが必要です。たとえば、この_/
_を指定すると、ホームページにいるときにのみ機能するので、すべてではありません。
プレーンなnode.jsでは、httpサーバーを作成した後、ページルーティングを実行する前に何かを書くのと同じくらい簡単です。
では、これをエクスプレスでどのように行うのですか?それを行うための最良の方法は何ですか?
Expressは Connect ミドルウェアに基づいています。
Expressのルーティング機能はアプリのrouter
によって提供され、独自のミドルウェアをアプリケーションに自由に追加できます。
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);
とても簡単です。
(追記:何らかのロギングが必要な場合は、Connectが提供する logger の使用を検討してください)
これを行う必要があります:
app.all("*", function (req, resp, next) {
console.log(req); // do anything you want here
next();
});
Expressは ルートパスのワイルドカード をサポートしています。したがって、app.all('*', function(req, res) {})
は1つの方法です。
しかし、それはルートハンドラーのためだけのものです。違いは、Expressルートハンドラーが応答を送信することが期待されていることです。そうでない場合、Expressは応答を送信しません。ヘッダーのチェックなど、明示的に応答を送信せずに何かを実行したい場合は、 Expressミドルウェア を使用する必要があります。 app.use(function(req, res, next) { doStuff(); next(); }