2014-10-09 12 views
0

내 노드 js 서버에 익스프레스 프레임 워크 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); 
}; 

이 사소한 예이지만, 어떻게이 (가)/라우팅 테이블에서 경로 기능을 제거 할 수 있을까? 또한 그것은이 라우팅 경로를 덮어 쓸 수 있습니다 나중에 또 다른 기능 라우팅 경로를 업데이트해야합니까?

답변

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' }); 
}); 

당신은 (당신은 또한 노선/비활성화 액세스 할 수 있도록 req의 속성을 사용할 수 있습니다 정확한 사용 사례에 따라 명백하게) 활성화 또는 경로에 대한 액세스를 비활성화 할 수 allowRoute 전환 .

라우트 핸들러를 다른 라우트 핸들러로 겹쳐 쓰는데도 비슷한 설정을 사용할 수 있습니다. 그러나 라우트 핸들러를 겹쳐 쓰는 것이 해결책 일 수 있는지 궁금해지기 시작합니다.

관련 문제