Node.js 如何使用node restify重载路由

Node.js 如何使用node restify重载路由,node.js,coffeescript,restify,Node.js,Coffeescript,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... retur

我正在使用并试图使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”搜索词匹配的所有记录。

我对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();
});

不过,我不确定事情是否应该这样做。

@robertklep很接近-你应该在路线上添加一个
名称

不支持,但可以通过以下方式实现相同的功能:

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();
});

嗯。。。现在我看了一下实现,它真的不一样了。事实上,离这里很远。也许我会写一个插件。。。