簡體   English   中英

如何使用節點Restify重載路由

[英]How to overload routes using node restify

我正在使用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”搜索條件匹配的記錄。

我對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很接近-您應該在路線上添加一個name

不支持表達“路由鏈”的語法 ,但是可以像這樣完成相同的功能:

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

https://github.com/mcavage/node-restify/issues/193

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM