快递4路线优先

时间:2014-06-02 21:12:58

标签: node.js express

在表达4之前,您可以执行

之类的操作
    app.get('/foo/bar', bar);
    app.get('/foo/*', foo);

在请求bar时使用/foo/bar中间件,在请求foo时使用/foo/baz中间件。但是,在快递4中,/foo/bar将调用bar中间件和foo中间件。有没有办法用快递4来实现快速3行为?

我能想到的一种方法是让我的第二个路径参数为/foo/(?!bar),但这似乎有点疯狂。

1 个答案:

答案 0 :(得分:2)

听起来你的目标是在传递/ foo / bar时调用bar(),否则调用foo()。一种方法是使用/ foo /:value。在fooHandler()中,检查req.params.value ===' bar',然后调用bar(),否则调用foo()。这使得代码更清晰,IMO。

app.get('/foo/:value', fooHandler);

:
:

function fooHandler(req, res) {
  if (req.params.value === 'bar') {
    this.bar(req, res);
  } else {
    this.foo(req, res);
  }
}

function bar(req, res) {/* do something */}

function foo(req, res) {/* do something */}