如何将中间件应用于Express中的特定路由器?

时间:2017-12-27 22:50:43

标签: node.js express

以下代码来自http://expressjs.com/en/guide/using-middleware.html#middleware.router。它定义了快速路由器实例上的中间件。它工作正常,但如果我定义另一个路由器,该路由器也将使用相同的中间件。我是否可以仅为特定的express.Router()实例定义中间件?

var app = express()
var router = express.Router()

// predicate the router with a check and bail out when needed
router.use(function (req, res, next) {
  if (!req.headers['x-auth']) return next('router')
  next()
})

router.get('/', function (req, res) {
  res.send('hello, user!')
})

// use the router and 401 anything falling through
app.use('/admin', router, function (req, res) {
  res.sendStatus(401)
})

1 个答案:

答案 0 :(得分:-1)

要使用特定于路线的内容,您可以使用.all()函数

router.route('/')
    .all(function (req, res, next){
        // do middleware stuff here and call next
        next();
    })
    .get(function (req, res) {
    res.send('hello, user!');
});