我正在为我的节点js服务器使用express framework 4.0。我想知道是否有任何方法可以在运行时动态删除路由
var express = require('express');
var router = express.Router(/*Options */);
router.get('/', function (req, res)
{
res.render('index', {title: "Home"});
});
router.get('/features', function (req, res)
{
res.render('features', {title: "Features"});
});
//Hook into the routing system
module.exports = function(app,rootPath)
{
app.use(rootPath, router);
};
这是一个简单的例子,但是如何从路由表中删除/ features路径?另外,如果我希望稍后更新功能路由路径,是否可以用另一个覆盖此路由路径?
答案 0 :(得分:1)
AFAIK你不能动态地删除路由(至少不是很好的方式),但是你可以使用过滤中间件来禁止在设置某个条件时访问路由。
例如:
var allowRoute = true;
var filterMiddleware = function(req, res, next) {
if (allowRoute !== true) {
return res.status(404).end();
}
next();
};
app.get('/features', filterMiddleware, function(req, res) {
res.render('features', { title: 'Features' });
});
您切换allowRoute
以启用或禁用对路由的访问(显然,根据具体用例,您还可以使用req
中的属性来启用/禁用对路由的访问权限。) p>
类似的设置可以用另一个覆盖路由处理程序,虽然我开始想知道你想要完成什么,如果覆盖路由处理程序就是解决方案。