簡體   English   中英

如何為所有路由定義快速中間件

[英]How can I define express middleware for all routes

我正在嘗試定義一種全局中間件,該中間件將適用於我的應用程序的所有路由。 我嘗試了一些方法,但仍然遇到一些問題。

var _gMDLW = function (req, res, next) {
  if(req.route) console.log('Called route ', req.route.path);
  next();
}

// Working fine and result on _gMDLW is /route1
app.get('/route1', _gMDLW, function (req, res, next) { return res.sendStatus(200); })


var globalRouter = new express.Router()

// Working fine and result on _gMDLW is /view
globalRouter.route('/view')
  .get(_gMDLW, function (req, res, next) { return res.sendStatus(200);})
app.use(globalRouter);

但是問題在這里

// Error in _gMDLW and getting /list instead of /items/list
var itemRouter = new express.Router()
itemRouter.route('/list')
  .get(_gMDLW, function (req, res, next) { return res.sendStatus(200);})
app.use('/items', itemRouter)

第二個問題是,有什么方法可以在app內部定義/添加_gMDLW ,而不是在每個路由中添加諸如app.use(_gMDLW)類的東西嗎?

謝謝

您可以使用app.all()解決此問題

app.all('*', _gMDLW);

function _gMDLW(req, res, next) {
    if (req.path == '/') return next();// redirect to homepage for guest

    next();//authenticated user
}

您可以根據需要進行修改

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM