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