2017-07-14 3 views
0

Können wir mehrere Routen in einer einzelnen Router-Datei definieren. z. B. Betrachten wir Unternehmen und Benutzer Registerkarte und ich möchte 1 Router-Datei für jede Registerkarte definieren. Alle unternehmensbezogenen Anrufe sollten vom Unternehmensrouter behandelt werden, und benutzerbezogene Anrufe sollten vom Benutzerrouter behandelt werden.Knoten Js: Mehrere Routen in einer einzelnen Router-Datei

//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; 

Derzeit wenn app Aufruf für '/ api/user/load_user_list' mein "Router 1" aufgerufen wird, empfängt.

Verpasse ich etwas. Um damit umzugehen, denke ich, kann ich einzelnen Router anrufen und an verschiedene Funktionen basierend auf Anfrage baseUrl delegieren.

Jede Hilfe/Anregung wird erkannt werden .. Danke

+0

gesendet Ich habe eine kleine Erinnerung, dass Express "first match" verwenden wird, sollten Sie mehr spezifische Routen vor weniger spezifischen auflisten, dh Route 1 zuletzt – danneth

+0

Ich legte die erste Route am Ende, aber immer noch "Route 1" wird aufgerufen. – user3004553

Antwort

1

Statt:

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')); 

Verwenden Sie einfach:

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

Und in Ihrem Router-Datei wie so die Routen umbenennen:

//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 
}); 

Ursache: Wenn app.use ('/ api/user/xyz', require ('./ xyz')) aufgerufen wird, wird der uri-Pfad nach api/user/xyz an den zu passierenden Router

Verwandte Themen