Node.js 获取快速路由中的文件类型
我有一个Express routeNode.js 获取快速路由中的文件类型,node.js,express,routes,Node.js,Express,Routes,我有一个Express route/doc/:id,它提供文档的HTML表示,我希望它在附加“.EPUB”时提供EPUB表示。然而,Express不会在一个时段内分开,因此如果我使用/doc/:id.epub将req.params.id设置为“id.epub”。是否有办法将文件扩展名识别为单独的参数,还是只需要使用正则表达式来提取它 我已经看过了res.format,但这似乎只有在设置了Accepted标题时才有效,就我所见,如果URL只是简单地输入到浏览器中,就不会有效了。这是有效的: 这要
/doc/:id
,它提供文档的HTML表示,我希望它在附加“.EPUB
”时提供EPUB表示。然而,Express不会在一个时段内分开,因此如果我使用/doc/:id.epub
将req.params.id
设置为“id.epub
”。是否有办法将文件扩展名识别为单独的参数,还是只需要使用正则表达式来提取它
我已经看过了res.format
,但这似乎只有在设置了Accepted
标题时才有效,就我所见,如果URL只是简单地输入到浏览器中,就不会有效了。这是有效的:
这要求
/doc/
后面的部分至少包含一个句点,这可能是问题,也可能不是问题。根据您所描述的行为,我认为您的路线匹配规则可能有问题
这项工作:
app.get('/doc/:id.epub', function(req, res, next){
res.send('id: ' + req.params.id); //match /doc/x.epub (id=x)
});
app.get('/doc/:id', function(req, res, next){
res.send('id: ' + req.params.id); //match doc/x (id=x) | doc/y.html (id=y.html)
});
如果/doc:/:id是第一个,那么/doc/x.epub的id为x.epub
app.get('/doc/:id.epub', function(req, res, next){
res.send('id: ' + req.params.id); //match /doc/x.epub (id=x)
});
app.get('/doc/:id', function(req, res, next){
res.send('id: ' + req.params.id); //match doc/x (id=x) | doc/y.html (id=y.html)
});