Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 获取快速路由中的文件类型_Node.js_Express_Routes - Fatal编程技术网

Node.js 获取快速路由中的文件类型

Node.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只是简单地输入到浏览器中,就不会有效了。这是有效的: 这要

我有一个Express route
/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)
});