【问题标题】:Wildcard route in restifyrestify 中的通配符路由
【发布时间】:2014-06-25 19:54:33
【问题描述】:
来自快递,我有类似的路线
server.get('/some/route/*', function(req, res) {
// accessing wildcard
console.log(req.params[0]);
});
这样的通配符路由在 restify 中看起来如何?
在 restify 中,我还想通过 req.params[0] 访问 uri 的通配符部分。
谢谢
【问题讨论】:
标签:
regex
node.js
express
restify
【解决方案1】:
这样的通配符路由在 restify 中看起来如何?
回答:
restify 采用的正则表达式与 express.js 略有不同。 '/some/route/*' in express 将是 '/some/route/.*' in restify
在 restify 中,我还想通过 req.params[0] 访问 uri 的通配符部分。
回答:
restify 并没有像 express 那样将通配符部分放在 req.params 中,因此需要从 req.url 手动解析通配符部分,如下所示:
var path = req.route.path;
var wildcard = req.url.split(path.substring(0, path.lastIndexOf('.')))[1];
因此,使用上面的代码,'/some/route/this/is/my/route' 的通配符部分将是 this/is/my/route
【解决方案2】:
这会有所帮助:
var url = req.url,
wildcardUrl = '';
wildcardUrl = url.split('/some/route/')[1];
//do something to wildcardUrl