快速路由器可选扩展
express router optional extensions
我在不同的文件中建立了这样的路由。
我需要其中一条路线来响应所有这些扩展(包括无扩展):
/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)
root-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;
我能够使用另一个 .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
对象传递给路由器,但这是不可取的。
我在不同的文件中建立了这样的路由。
我需要其中一条路线来响应所有这些扩展(包括无扩展):
/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)
root-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;
我能够使用另一个 .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
对象传递给路由器,但这是不可取的。