我有一个 Express 路由/doc/:id
,它提供文档的 HTML 表示,我希望它在附加“ .epub
”时提供 EPUB 表示。但是,Express 不会在句点上分开,所以如果我使用/doc/:id.epub
集合req.params.id
来“ id.epub
”。有没有办法将文件扩展名识别为单独的参数,还是我只需要使用正则表达式来提取它?
我看过res.format
,但似乎这仅在设置标题时才有效Accepted
,据我所知,如果只是将 URL 输入到浏览器中则不会。
这有效:
app.get('/doc/:filename.:ext', function(req, res) {
...
});
这要求后面的部分/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,您将获得 x.epub 的 id。