ロガーを追加する
app.jsにconsole.logを実行するmiddlewareを追加します。
1 2 3 4 5 6 |
var myLogger = function (req, res, next) { console.log('LOGGED'); next(); }; app.use(myLogger); |
localhost:3000/にアクセスすると以下のようなログが出力されます。どこへのアクセスであっても「LOGGED」が出力されていますね。
1 2 3 4 5 6 7 |
untitled:server Listening on port 3000 +0ms LOGGED GET / 200 17.794 ms - 207 LOGGED GET /stylesheets/style.css 200 5.124 ms - - LOGGED GET /favicon.ico 404 5.561 ms - 1116 |
実行のタイミングを表示させてみる
次に、アクセスした時刻を表示させてみます。
1 2 3 4 5 6 |
var startTime = function (req, res, next) { console.log(Date.now()); next(); }; app.use(startTime); |
アクセスしてみると数値が表示されてますね。特にフォーマットしていないので数値のみの表記ですが、リクエスト直後の時刻が記録されるようになりました。
1 2 3 |
untitled:server Listening on port 3000 +0ms 1475383177503 GET / 304 19.608 ms - - |
プロパティに格納する
次に、リクエストの時刻を取得して、reqのプロパティに格納して別の関数で使用してみます。
1 2 3 4 |
var startTime = function (req, res, next) { req.startTime = Date.now(); next(); }; |
次にindex.jsで、req.startTimeを使ってみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { var responseText = 'Hello World!'; responseText += 'Requested at: ' + req.startTime + ''; res.send(responseText); //res.render('index', { title: 'Express' }); }); module.exports = router; |
ブラウザでアクセスすと表示が以下となりました。変数が引き継がれて出力できたことが確認できました。
1 |
Hello World!Requested at: 1475385678347 |
この実装を使うことで、すべてのリクエスト共通処理をまとめて記述できそうですね。
参考
Express アプリケーションで使用するためのミドルウェアの作成
http://expressjs.com/ja/guide/writing-middleware.html