节点中带快速框架的动态路由

时间:2014-10-09 08:18:46

标签: javascript node.js express dynamic url-routing

我正在为我的节点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路径?另外,如果我希望稍后更新功能路由路径,是否可以用另一个覆盖此路由路径?

1 个答案:

答案 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>

类似的设置可以用另一个覆盖路由处理程序,虽然我开始想知道你想要完成什么,如果覆盖路由处理程序就是解决方案。