Я пытаюсь управлять своими маршрутами в декларативных объектах, а затем инициализировать / зарегистрировать обработчики конечных точек, используя один или несколько объектов.
К сожалению, когда я пытаюсь зарегистрировать обработчики в цикле декларативных маршрутов, методов и обработчиков, кажется, что маршруты не зарегистрированы в Express и приводят к 404, когда я пытаюсь получить доступ к маршрутам.
Вот фрагмент кода:
const services = require('./services.js');
const appRoutes = [
{ route: '/x/user', handler: { get: services.getUserName, post: services.getUserName } },
{ route: '/x/ping', handler: { get: services.ping } },
{ route: '/x/mary/had/:foo/little/:animal', handler: { get: (req, res) => res.send({ foo: req.params.foo, animal: req.params.animal }) } }
];
class routes {
static registerRoutes(app, rs) {
rs.forEach(r => {
const rt = r.route;
const h = r.handler;
console.log('registerRoutes.routes.forEach: ' + rt + '; hs: ' + h.get);
if (h.get) app.get(rt, h.get);
if (h.post) app.post(rt, h.post);
if (h.delete) app.delete(rt, h.delete);
if (h.head) app.head(rt, h.head);
if (h.put) app.put(rt, h.put);
});
}
static initializeRoutes(app) {
this.initializeDevRoutes(app);
}
static initializeDevRoutes(app) {
const rs = [
{ route: '/z/user', handler: { get: services.getUserName, post: services.getUserName } },
{ route: '/z/ping', handler: { get: (req, res) => res.send('pinged') } }
];
this.registerRoutes(app, appRoutes);
this.registerRoutes(app, rs);
app.get('/api/getUsername', services.getUserName); // (req, res) => res.send({ username: os.userInfo().username }));
app.get('/api/ping', services.ping); // (req, res) => res.send({ ping: new Date() }));
app.get('/api/mary/had/:foo/little/:animal', (req, res) => res.send({ food: req.params.foo, animal: req.params.animal }));
}
}
module.exports = routes;
Маршруты /x/...
или /z/...
не были успешно зарегистрированы, поскольку я получил 404 для всех этих маршрутов.
Однако для явных вызовов на app.get('/api/....)
внизу правильно зарегистрируйте маршруты, так как возвращаются ожидаемые результаты 200 состояний.
Это мой первый проект node / js, поэтому я могу что-то упустить из того, какОбласти применения JS и обработка закрытий.
Любая помощь / предложения приветствуются.
Спасибо.