2015-06-15 44 views
0

我目前在NodeJS应用程序中使用Express路由器。我只是简单地使用app.use(app.router);进行路由,并且运行良好。 但是,我现在正在测试一些新的路线,并希望以不同的方式处理它们。如何处理不同于所有其他快速路由

理想情况下,我想能够说:

var vers2Router = require('./routes/version2'); 

app.use('/version2', vers2Router); 
app.use(app.router); 

我能做到这一点,以处理所有/version2路线与vers2Router剩下的只是使用app.router

+0

这恰好是顶我头,如果我错了,请原谅我 - 是的,这种模式会起作用(我在某处使用过) - 但据我记忆,你想覆盖特殊(定义全局处理程序之后的cific路由('/ version2')*),而不是之前(所以'app.use(app.router)'将*先于* app.use('/ version2')')。 – bardzusny

回答

1

从Express版本4.x开始,app.router已被删除。现在路由按照它们添加的顺序执行。

现在你可以使用express.Router,因为它可以让你有孤立的路由实例,在你的例子中你可以用自己的版本化路由创建许多路由器。

事情是这样的:

// app.js 
'use strict'; 

var express = require('express'); 
var app = express(); 

var userRouterV1 = require('./routes/v1/userRouter.js'); 
var userRouterV2 = require('./routes/v2/userRouter.js'); 

app.use('/v1/api/users', userRouterV1); 
app.use('/v2/api/users', userRouterV2); 

app.listen(4000, function() { 
    console.log('server up an running'); 
}); 

和你孤立路线版本1:

// /routes/v1/userRouter.js 
'use strict'; 

var express = require('express'); 
var router = express.Router(); 

router.get('/', function (req, res) { 
    res.send('Hello v1'); 
}); 

module.exports = router; 

最后你的孤立路线版本2:

// /routes/v2/userRouter.js 
'use strict'; 

var express = require('express'); 
var router = express.Router(); 

router.get('/', function (req, res) { 
    res.send('Hey v2'); 
}); 

module.exports = router;