【问题标题】:Dynamic routing with express framework in node在节点中使用 express 框架进行动态路由
【发布时间】:2014-10-09 08:18:45
【问题描述】:

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

【问题讨论】:

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


    【解决方案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 中的属性来启用/禁用对路由的访问)。

    类似的设置可用于用另一个设置覆盖路由处理程序,尽管我开始想知道您要完成什么以及覆盖路由处理程序是否是解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 2015-12-09
      • 2013-11-18
      • 1970-01-01
      • 2016-09-24
      相关资源
      最近更新 更多