Экспресс-роутер, дополнительные расширения

У меня маршрут построен таким образом в разных файлах.

Мне нужен один из маршрутов для ответа на все эти расширения (в том числе без расширения):

/api/sitemap
/api/sitemap.xml
/api/sitemap.html
/api/sitemap.json

мое размонтированное определение маршрута для маршрута карты сайта выглядит следующим образом:

router.route('/\.:ext?');

Но единственный путь, на который он отвечает, это / api / sitemap. Он не принимает ни одно из вышеупомянутых расширений. На самом деле, он не отвечает ни на какие расширения.

Вот накопление моих маршрутов в сжатой форме:

/ 
/api
/api/sitemap (pattern should accept sitemap.xml sitemap.json or sitemap.html) 

корневой routes.js

const apiRoutes = require('./api-routes.js');
const router = require('express').Router();
const mainRoot = router.route('/');
mainRoot((req, res) => { res.status(200).send('ok') };
router.use('/api', apiRoutes); 
module.exports = router;

API-routes.js

const sitemapRoutes = require('./sitemap-routes.js');
const router = require('express').Router();
const apiRoot = router.route('/');
apiRoot((req, res) => { res.status(200).send('ok') };
router.use('/sitemap', sitemapRoutes);
module.exports = router;

карта сайта-routes.js

const router = require('express').Router();
const sitemapRoot = router.route('/\.:ext?');
sitemapRoot((req, res) => { res.status(200).send('ok') };
modules.exports = router;

1 ответ

Решение

Я был в состоянии соответствовать, используя другой .use для маршрута с использованием расширения.

apiRouter.use("/sitemap", sitemapRouter);

apiRouter.use("/sitemap.:ext?", (req, res) => {
    // sample response
    res.end(`${req.params.ext ? req.params.ext : 'root'} did match!`);
});

Я перепробовал кучу вещей, но мог делать только нужные маршруты, делая это. Если вам нужно сохранить все sitemap связанные функции вместе, вы должны export маршрутизатор и функция, необходимая для /sitemap.:ext? Перезвоните.

Другая вещь, которую вы можете сделать, это передать app Объект к маршрутизатору, но это не желательно.

Другие вопросы по тегам