gpt4 book ai didi

node.js - 路由路径周围的括号

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

我在一个使用kraken和express的项目中找到了这段代码

module.exports = function (router) {
router.get('(/)', .....);
router.get('(/nfc/read)', .....);
}

我不明白为什么路由路径周围有括号。

它会改变什么吗?我在express和kraken的文档中找不到任何关于它的信息。在整个项目的其余部分中,所有其他路线都是正常的,没有括号。

最佳答案

使用和不使用括号的区别在于,使用括号时您将获得 req.params 中的路径。

例如本例中:

let app = require('express')();
app.get('/abc', (req, res) => {
console.log(req.params[0]);
});
app.listen(3333, () => console.log('http://localhost:3333/'));

将打印的内容是未定义。但在这个例子中:

let app = require('express')();
app.get('(/abc)', (req, res) => {
console.log(req.params[0]);
});
app.listen(3333, () => console.log('http://localhost:3333/'));

将打印的是/abc

如果括号越多,req.params中的元素就会越多。例如这里:

let app = require('express')();
app.get('(/a)(bc)', (req, res) => {
console.log(req.params[0]);
console.log(req.params[1]);
});
app.listen(3333, () => console.log('http://localhost:3333/'));

相同的 /abc 路由将被匹配,但打印的内容是:

/a
bc

这是因为路由被解析为正则表达式,并且括号是捕获组。请参阅:

请注意,req.params 实际上是一个对象,而不是数组。这将返回false:

console.log(Array.isArray(req.params));

它只是一个碰巧以数字(实际上是 "0""1" 等字符串)作为键的对象。

关于node.js - 路由路径周围的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42811979/

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