Я создал базовое приложение Node/Express и пытаюсь реализовать маршруты на основе разделения логики в разных файлах.Ошибка 404 при маршрутизации с использованием Express и Nodejs
В 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()?
------------ Edit ---------------
О дальнейшем Testing
Я удалось отладить локальный экземпляр express.Router(), а стек уровня маршрутизации в локальной переменной «маршрутизатор» обновляется маршрутами из отдельных модулей.
Последняя строка:
app.use('/api', router);
также успешно обновление глобального экземпляра приложения объект внутреннего app.router с правильными слоями маршрутизации от локального экземпляра маршрутизатора, переданного ей.
Я думаю, проблема заключается в том, что Маршруты для '/ api' находятся под номером 13-14 в стеке слоя маршрутизации, так что существует некоторая проблема в стеке с некоторой другой маршрутизацией промежуточного слоя, не пропускающей маршруты до конец ... Мне просто нужно отследить это, я думаю.
Я понимаю, что это сработает, но я хотел бы узнать, может ли он быть реализован с использованием одного экземпляра express.Router(). Для этой реализации требуется, чтобы базовый URL был явно определен для каждого маршрута. Используя один экземпляр express.Router(), я надеюсь установить базовый URL-адрес в '/ api' и добавить маршруты поверх этого. – drunkmeerkat