2017-07-14 6 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パスが一致するルータに送信されます

関連する問題