2017-07-14 171 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路徑被髮送到要匹配的路由器