在表达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)
,但这似乎有点疯狂。
答案 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 */}