应用中间件在Express

时间:2016-07-24 17:41:46

标签: node.js express routes

无论请求类型如何,我都希望将中间件应用于路由。目前我有:

router.route('/campaigns')
    .get(restrictTo('advertiser'), restrictTo('admin'), queries.getCampaigns)
    .post(restrictTo('advertiser'), restrictTo('admin'), queries.createCampaign);

我想要像:

router.route('/campaigns', restrictTo('advertiser'), restrictTo('admin'))
    .get(queries.getCampaigns)
    .post(queries.createCampaign);

但这似乎不起作用。

3 个答案:

答案 0 :(得分:1)

您应该可以像.use()那样使用:

router.route('/campaigns')
  .use(restrictTo('advertiser'), restrictTo('admin'))
  .get(queries.getCampaigns)
  .post(queries.createCampaign);

或:

router.route('/campaigns')
  .use(restrictTo('advertiser'))
  .use(restrictTo('admin'))
  .get(queries.getCampaigns)
  .post(queries.createCampaign);

答案 1 :(得分:0)

您可以使用.all()

示例:

 router.route('/campaigns')
      .all(yourmiddleware)
      .get(function (req, res, next) {
            // your function ...
      }) 

对我有用。

答案 2 :(得分:0)

快速文档说,您可以这样做:

app.use('/user/:id', function (req, res, next) {
  console.log('Request URL:', req.originalUrl)
  next()
}, function (req, res, next) {
  console.log('Request Type:', req.method)
  next()
})

/user/:id替换为所需的路径。

来源:https://expressjs.com/en/guide/using-middleware.html