【发布时间】:2016-06-24 19:25:29
【问题描述】:
app.get('/:service[SOMETHING GOES HERE]', function(req, res, next){
console.log('Service is:', req.params.service);
});
这需要捕获看起来像以下任何一种的 URL:
/foo
/foo/bar
/foo/bar/baz
回调与 foo 之后的任何内容无关,但理想情况下应该能够将 foo 作为名为 service 的参数访问,而无需手动解析路径。
我一直在使用this 进行测试,但仍然没有找到任何可以做到这一点的东西。到目前为止最接近的是/:service*。
编辑:不,它不是答案为 /:service/* 的那个的副本,因为它不包括 /foo。
【问题讨论】:
-
您不能这样做,因为
:service是一个变量,并没有指明它在 URL 模式中的开始或停止位置。因此,您没有提供任何规则来知道 URL 的哪个部分将被解释为:service部分以及后面的部分。因此,您似乎要求的是一条匹配所有内容的路由,然后您在匹配所有内容后从 URL 中解析出片段。如果这不是你要问的意思,那么请澄清你的问题。请说明你应该匹配什么和你不应该匹配这条路线。 -
为了表明它从哪里开始和停止,express 在内部做了一些正则表达式来匹配斜线之间的东西。我只是想知道是否有一种更简单的方法可以涵盖所有情况。例如。
/:service/:trash*涵盖案例 2 和 3,但不涵盖案例 1,/:service涵盖案例 1,但不涵盖案例 2 和 3。 -
不,它不是答案为
/:service/*的那个的副本,因为这不包括/foo。 -
@Paraknight 不在 Express 中(不要太相信测试人员 ;-)
标签: regex node.js express url-routing