2017-02-07 10 views
0

私は簡単なラップアプリを書いて、それを手に入れます。a)リクエスト日&ユーザーリクエストの時刻 b)リクエストURL。 c)応答時間。エクスプレスjsでラッパークラスを書くには

これは急行の​​jsに

var express = require('express'); 
var app = express(); 

var appget = app.get; 

(function() { 

app.get = function() { 

    var start = new Date(); 

    console.log('arguments', arguments) 

    var result = appget.apply(this, arguments); 
    var end = new Date(); 

    var duration = end.getTime() - start.getTime(); 

    console.log("duration===", duration); 
} 

})(); 

をラップする方法である私は、ラッパーコード をシンプル書いた。しかしREQパラメータを取得する方法を知っておく必要がありますか?

誰でもこの経験はありますか?

答えて

1

すべてのルートの前に配置されたExpressミドルウェア機能を使用して、これを行うことができます。ミドルウェアでは、ヘッダと本文が完全に書かれてリクエスタに返されると、以下のコードは'finish' event to be emitted from the res objectを待っています。リクエスト自体が閉じられた後に応答時間を記録することを希望する場合は、reqオブジェクトの'close'イベントを以下のミドルウェアでリッスンすることができます。

const express = require('express'); 
const app = express(); 
const port = process.env.PORT || 1337; 

// Place this middleware before any of the route definitions/middleware 
app.use((req, res, next) => { 
    // store when request date & time came in 
    req.startTime = Date.now(); 

    // Log the original URL requested 
    console.log(req.originalUrl); 

    // Register finish event handler so when the response 
    // body and headers are sent, the total responseTime is logged 
    res.on('finish',() => { 
     let responseTime = Date.now() - req.startTime; 
     console.log(`Response Time: ${responseTime}`); 
    }); 

    return next(); 
}); 

// Place all routes/router middleware here 

app.listen(port,() => { 
    console.log(`Listening on ${port}); 
}); 
関連する問題