2015-06-15 88 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;