【发布时间】:2014-11-12 07:10:21
【问题描述】:
我已经创建了一个基本的 Node/Express 应用程序,并正在尝试基于不同文件中的逻辑分离来实现路由。
在 Server.js 中
var app = express();
var router = express.Router();
require('./app/routes/users')(router);
require('./app/routes/events')(router);
require('./app/routes/subscribe')(router);
require('./app/routes/login')(router);
app.use('/api',router);
在 ./app/routes/users.js
module.exports = function(router){
router.route('/users/')
.all(function(req, res, next) {
// runs for all HTTP verbs first
// think of it as route specific middleware!
})
.get(function(req, res, next) {
res.json(req.user);
})
.put(function(req, res, next) {
// just an example of maybe updating the user
req.user.name = req.params.name;
// save user ... etc
res.json(req.user);
})
.post(function(req, res, next) {
next(new Error('not implemented'));
})
.delete(function(req, res, next) {
next(new Error('not implemented'));
})
router.route('/users/:user_id')
.all(function(req, res, next) {
// runs for all HTTP verbs first
// think of it as route specific middleware!
})
.get(function(req, res, next) {
res.json(req.user);
})
.put(function(req, res, next) {
// just an example of maybe updating the user
req.user.name = req.params.name;
// save user ... etc
res.json(req.user);
})
.post(function(req, res, next) {
next(new Error('not implemented'));
})
.delete(function(req, res, next) {
next(new Error('not implemented'));
})
}
所有路由都返回 404-Not Found。
有人对在 Express Apps 中实现模块化路由的最佳方式有建议吗?
是否可以在 express.Router() 的单个实例中加载多个路由?
------------编辑---------------
关于进一步测试
我已经能够调试 express.Router() 本地实例,并且本地“路由器”变量中的路由层堆栈正在使用来自各个模块的路由进行更新。
最后一行:
app.use('/api', router);
还成功地更新了全局应用程序实例内部 app.router 对象,并使用来自本地路由器实例的正确路由层传递给它。
我认为问题在于“/api”的路由在路由层堆栈中的编号为 13-14,因此堆栈中存在一些问题,其他一些中间件路由不允许路由通过到最后...我想我只需要追踪这个。
【问题讨论】: