我正在开发NodeJS上的内容预处理器 我有3种具体的预处理方法:
每种方式都彼此非常不同(不同的中间件) 所以我初始化了3个路由器:
var xmlRouter = express.Router();
var xhtmlRouter = express.Router();
var htmlRouter = express.Router();
我只需要将每个请求发送到具体的路由器。 由于我的网址上的剥离效果,我无法使用app.use()来安装每个路由器:
// Binding
app.use(/\/\S*\.fast\.xml(?=$)/, xmlRouter);
app.use(/\/\S*\.xhtml(?=$)/, xhtmlRouter);
app.use([/\/\S*\.html(?=$)/, /\/\S*\/(?=$)/], htmlRouter);
我将丢失我需要进一步了解的网址。没办法
那有什么解决方案吗?
答案 0 :(得分:2)
我现在无法对其进行测试,但由于它不符合评论,我在答案部分将其写在这里。
恕我直言,它应该这样工作:
var xmlRouter = express.Router();
app.use(function(req, res, next) {
if( req.url.match(/\/\S*\.fast\.xml(?=$)/) ) {
//if the url matches, pass the res, res, next to the xmlRouter
xmlRouter.handle(req, res, next);
//if handle does not work try: xmlRouter(req, res, next)
} else {
//otherwise pass it to the next registered route
next();
}
});
//do the same for the other routers
这个示例中可能存在错误,因为我无法对其进行测试,但我认为这个想法应该是明确的。