我正在尝试定义一个适用于我的应用程序的所有路由的全局中间件。我试过一些方法,但仍然遇到了一些问题。
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)
第二个问题是,有没有办法在_gMDLW
内定义/添加app
,而不是在每条路线中添加类似app.use(_gMDLW)
的内容?
谢谢
答案 0 :(得分:0)
您可以使用
app.all()
来解决此问题
app.all('*', _gMDLW);
function _gMDLW(req, res, next) {
if (req.path == '/') return next();// redirect to homepage for guest
next();//authenticated user
}
您可以根据需要进行修改