同名多个查询参数

8
我想知道 EXPRESS 如何解析具有相同名称的多个查询参数;我无法在任何地方找到有用的参考资料。 我想特别了解 EXPRESS,它将如何处理此 URL www.example.com/page?id=1&id=2&id=3.....id=n

这个回答解决了你的问题吗?在GET请求中传递同一参数名的多个值的正确方法 - Rohit Ambre
不,它讨论的是哪种方法更好,而不是它们如何工作。此外,我认为每个框架都有自己解析事物的方式,特别是对于这样的边角情况,这就是我提到 EXPRESS 的原因。在提问之前我已经看过了。无论如何,还是谢谢! - hakiki_makato
Express中的QueryParser是可配置的,默认配置(“extended”)使用qs来解析查询字符串,简单模式使用Node的本地查询解析器querystring,您还可以定义自己的解析器。我在链接的文档中没有找到关于双重名称的任何内容,但您可以进行测试。 - Teemu
嘿@Teemu,感谢您的回复,正如您所提到的,我已经找到了一些相关性。据我所知,它们是存储在数组中的,这在我看来是绕过本地文件包含过滤器的好方法。我只想要一些具体的文档或RFC部分,支持类似的论点。 - hakiki_makato
正如 Eduardo 在建议的重复问题中所述,“_没有定义的标准_”,你必须检查这些实现的文档,而在这两种情况下似乎没有包含所需的信息。因此,找出答案的唯一方法就是测试... - Teemu
1个回答

2

您可以使用通常的req.query。每当有多个相同名称的查询参数时,req.query[paramName]将返回一个数组而不是值。因此,在您的情况下:


app.get("/page", (req, res) => {
    const { id } = req.query
    console.log("ID is "+ id) 
});

// GET www.example.com/page?id=1&id=2&id=3
// ID is ["1", "2", "3"]

// GET www.example.com/page?id=12345
// ID is 12345

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接