获取Express路由中的文件类型

时间:2013-05-02 12:35:40

标签: node.js express routes

我有一个Express路由/doc/:id,用于提供文档的HTML表示,我希望它在附加" .epub"时提供EPUB表示。但是,快递并没有在一段时间内分开,所以如果我使用/doc/:id.epubreq.params.id设置为" id.epub"。有没有办法将文件扩展名识别为单独的参数,还是只需要使用正则表达式来提取它?

我查看了res.format,但似乎只有在设置了Accepted标头时才有效,如果只是将URL输入到浏览器中就不会这样,就我而言可以看到。

2 个答案:

答案 0 :(得分:3)

这有效:

app.get('/doc/:filename.:ext', function(req, res) {
  ...
});

这要求/doc/后面的部分至少包含一个句号,这可能是也可能不是问题。

答案 1 :(得分:0)

根据您描述的行为,我认为您的路线匹配规则可能无序。

这有效:

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。