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
。
答案 0 :(得分:1)
在实际的Express路线中使用/:service*
可以完全符合您的要求:
/foo maps to { '0': '', service: 'foo' }
/foo/bar maps to { '0': '/bar', service: 'foo' }
/foo/bar/blah maps to { '0': '/bar/blah', service: 'foo' }
由于某种原因,Express Route Tester会针对这些类型的模式(这可能与Express的配置不同)对这些URL进行不同的映射。
答案 1 :(得分:0)
您可以使用app.use()功能。阅读有关路径处理的文档以获取更多信息。您修改后的代码将是:
app.use('/foo', function(req, res, next){
console.log('Service is:', req.params.service);
});
缺点是您不会将foo
恢复为服务参数。