3

我有一个 Express 路由/doc/:id,它提供文档的 HTML 表示,我希望它在附加“ .epub”时提供 EPUB 表示。但是,Express 不会在句点上分开,所以如果我使用/doc/:id.epub集合req.params.id来“ id.epub”。有没有办法将文件扩展名识别为单独的参数,还是我只需要使用正则表达式来提取它?

我看过res.format,但似乎这仅在设置标题时才有效Accepted,据我所知,如果只是将 URL 输入到浏览器中则不会。

4

2 回答 2

5

这有效:

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

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

于 2013-05-02T13:07:25.803 回答
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。

于 2013-05-03T04:00:52.703 回答