ミドルウェア - Express

ミドルウェアを作る

app.js

var myLogger = function (req, res, next) {
  console.log('ミドルウェア');
  // 次のミドルウェアへ
  next()
}

// ミドルウェアの読み込み
app.use(myLogger);

ファイルを分けて指定する

「 Express Generator 」を使ってアプリケーションを作成し以下のようにファイルを作成・編集します。

ミドルウェアをルーターに対して複数指定することができます。

middleware/middleware.js

module.exports = {
  main: (req, res, next) => {
    console.log("main");
    next();
  },
  sub: (req, res, next) => {
    console.log("sub");
    next();
  },
  hello: (req, res, next) => {
    console.log("hello, world");
    next();
  }
}

routes/index.js

var express = require('express');
var router = express.Router();
const md = require('./../middleware/middleware');

/* GET home page. */
router.get('/', md.main, md.hello, function(req, res, next) {
  res.render('index', { title: 'Express' });
});

module.exports = router;

routes/users.js

var express = require('express');
var router = express.Router();
const md = require('./../middleware/middleware');

/* GET users listing. */
router.get('/', md.sub, function(req, res, next) {
  res.send('respond with a resource');
});

module.exports = router;

モジュールのように呼び出す。

middleware/middleware.js

module.exports = {
  main: (req, res, next) => {
    console.log("main");
    next();
  },
  sub: (req, res, next) => {
    console.log("sub");
    next();
  },
  hello: () => {
    console.log("hello, world");
  }
}

routes/index.js

var express = require('express');
var router = express.Router();
const md = require('./../middleware/middleware');

/* GET home page. */
router.get('/', md.main, function(req, res, next) {
  md.hello();
  res.render('index', { title: 'Express' });
});

module.exports = router;

routes/users.js

var express = require('express');
var router = express.Router();
const md = require('./../middleware/middleware');

/* GET users listing. */
router.get('/', md.sub, function(req, res, next) {
  res.send('respond with a resource');
});

module.exports = router;