gpt4 book ai didi

node.js - Express 4 路线优先

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:56 25 4
gpt4 key购买 nike

在express 4之前,你可以做类似的事情

    app.get('/foo/bar', bar);
app.get('/foo/*', foo);

导致在请求 /foo/bar 时使用 bar 中间件,在请求 /foo/时使用 foo 中间件baz 被请求。然而,在express 4中,/foo/bar将调用bar中间件和foo中间件。有没有办法用express 4实现express 3行为?

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

最佳答案

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

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 */}

关于node.js - Express 4 路线优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24003389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com