gpt4 book ai didi

node.js - Express-js 通配符路由覆盖路径下的所有内容,包括路径

转载 作者:IT老高 更新时间:2023-10-28 21:49:03 25 4
gpt4 key购买 nike

我试图让一条路线覆盖 /foo 下的所有内容,包括 /foo 本身。我试过使用 /foo*,它适用于所有 except 它不匹配 /foo。观察:

var express = require("express"),
app = express.createServer();

app.get("/foo*", function(req, res, next){
res.write("Foo*\n");
next();
});

app.get("/foo", function(req, res){
res.end("Foo\n");
});

app.get("/foo/bar", function(req, res){
res.end("Foo Bar\n");
});

app.listen(3000);

输出:

$ curl localhost:3000/foo
Foo
$ curl localhost:3000/foo/bar
Foo*
Foo Bar

我有哪些选择?我想出的最好的方法是路由 /fo* 这当然不是非常理想,因为它会匹配太多。

最佳答案

我认为你必须有 2 条路线。如果您查看连接路由器的第 331 行,路径中的 * 将替换为 .+,因此将匹配 1 个或多个字符。

https://github.com/senchalabs/connect/blob/master/lib/middleware/router.js

如果您有 2 条路线执行相同的操作,您可以执行以下操作来保留它 DRY .

var express = require("express"),
app = express.createServer();

function fooRoute(req, res, next) {
res.end("Foo Route\n");
}

app.get("/foo*", fooRoute);
app.get("/foo", fooRoute);

app.listen(3000);

关于node.js - Express-js 通配符路由覆盖路径下的所有内容,包括路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6161567/

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