在Express路线中获取文件types
我有一个Express route /doc/:id
,用于提供文档的HTML表示,我希望它在附加“ .epub
”时用于EPUB表示。 不过,Express在一段时间内不会分开,所以如果我使用/doc/:id.epub
将req.params.id
设置为“ id.epub
”。 有没有办法将文件扩展名识别为一个单独的参数,或者我只是需要使用正则expression式来提取它?
我已经看过res.format
,但是看起来这只有在Accepted
头文件被设置的情况下才有效,就我所见,如果URL被简单地input到浏览器中,它就不会被使用。
这工作:
app.get('/doc/:filename.:ext', function(req, res) { ... });
这要求/doc/
中的部分至less包含一个句点,这可能是问题,也可能不是问题。
根据你所描述的行为,我认为你可能有你的路线匹配规则不按顺序。
这工作:
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。