我正在使用node-restify并尝试重载GET路由 - 这可能吗? next()
不应该呼叫下一个匹配的路由注册吗?
这是一个例子。关于它为什么不起作用的任何提示?
server.get "search", (req, res, next) ->
query = req.params.q
console.log 'first handler'
return next() if not query?
# implement search functionality... return results as searchResults
res.send 200, searchResults
next()
server.get "search", (req, res, next) ->
console.log 'second handler'
res.send 200, "foo"
next()
我希望/search
输出“foo”,我希望/search?q=bar
输出与“bar”搜索字词匹配的所有记录。
答案 0 :(得分:0)
我对Restify不是很熟悉,但它确实与Express不同。
我用它来工作:
app.get('/search', function(req, res, next) {
var q = req.params.q;
if (! q) {
return next('getsearchfallback');
}
res.send('bar');
});
app.get('search-fallback', function(req, res, next) {
res.send('foo');
next();
});
我不确定这是不是应该怎么做。
答案 1 :(得分:0)
@robertklep很接近 - 你应该在路线上加name
。
不支持express "route chain" syntax,但可以像这样完成相同的功能:
server.get('/foo', function (req, res, next) {
if (something()) {
next('GetBar');
return;
}
res.send(200);
next();
});
server.get({
path: '/bar',
name: 'GetBar'
}, function (req, res, next) {
res.send(200, {bar: 'baz'));
next();
});