2017-07-14 117 views
0

我们可以在单个路由器文件中定义多个路由吗? 例如:考虑我们有公司和用户选项卡,我想为每个选项卡定义1个路由器文件。所有与公司相关的呼叫应由公司路由器处理,用户相关的呼叫应由用户路由器处理。节点Js:单个路由器文件中的多个路由

//app.js 
app.use('/', require('./routes/user')); 
app.use('/api/user/load_user_list', require('./routes/user')); 
app.use('/api/user/get_user_detail', require('./routes/user')); 

//User.js router 
var express = require('express'); 
var router = express.Router(); 

//router 1 
router.get('/', function (req, res, next) { 
    //do something here - 
}); 

//router 2 
router.get('/api/user/load_user_list', function (req, res, next) { 
    //do something here 
}); 

//router 3 
router.get('/api/user/get_user_detail', function (req, res, next) { 
    //do something here 
}); 
module.exports = router; 

目前,当应用程序接收到 '/ API /用户/ load_user_list' 我的 “路由器1” 的呼叫被调用。

我错过了什么。为了解决这个问题,我想我可以根据请求baseUrl来调用单个路由器并委托给不同的函数。

任何帮助/建议将理解..谢谢

+0

我有一个轻微的回忆,表示将使用“第一场比赛”,你应该在不太具体的比赛之前列出更具体的路线,即地方路线1最后 – danneth

+0

我放置第一条路线,但仍然“路线1”被调用。 – user3004553

回答

1

相反的:

app.use('/', require('./routes/user')); 
app.use('/api/user/load_user_list', require('./routes/user')); 
app.use('/api/user/get_user_detail', require('./routes/user')); 

只需使用:

app.use('/', require('./routes/user')) 
app.use('/api/user', require('./routes/user')); 

而且在你的路由器文件重命名,像这样的路线:

//router 2 
router.get('/load_user_list', function (req, res, next) { 
    //do something here 
}); 

//router 3 
router.get('/get_user_detail', function (req, res, next) { 
    //do something here 
}); 

原因: 当调用app.use('/ api/user/xyz',require('./ xyz'))时,api/user/xyz之后的uri路径被发送到要匹配的路由器