是否可以使用Express.Router创建不共享中间件的不同路由器?封装快速路由器
对我来说,似乎Express.Router使用单身,所以无论我尝试什么,中间件都会连接到所有路由器。所以,无需创建的快捷应用程序的多个实例,是有办法做到以下几点:
创建复式路由器
var router_a = Express.Router();
var router_b = Express.Router();
给每个路由器独特的路线和中间件
router_a.use(function(req, res, next){
console.log('Only works on router_a!');
});
router_a.get('/', function(req, res){
console.log('Only works on router_a!');
});
router_b.use(function(req, res, next){
console.log('Only works on router_b!');
});
router_b.get('/', function(req, res){
console.log('Only works on router_b!');
});
将每个路由附加到自定义url命名空间
app.use('/a', router_a);
app.use('/b', router_b);
是否有直接的方法来实现这一点?在阅读路由器上的文档之后,我没有看到任何暗示这种可能的东西。
是的,你可以根据需要和各自为对方完全独立,并可以在自己的URL命名空间的子集工作,有许多路由器。这是在[快速文档](http://expressjs.com/en/guide/routing.html#express-router)中解释的。在这个特定的例子中,'/ birds/*'由一个路由器实例处理,您可以为其他顶级路径重复多次。而且,顶级路由器也可以在其中具有子路由器。每个路由器都有自己的中间件,只有在涉及到路由器的路径时才会触发。 – jfriend00
这似乎没有按照您的说法工作。当我设置多个路由器时,不匹配的路由器的middlware仍然会在所有路由上执行。 –
你可能会发表一个工作的例子吗?因为我可能做错了一些事情。 @ jfriend00 –