多个同名查询参数

Posted

技术标签:

【中文标题】多个同名查询参数【英文标题】:Multiple query parameters with same name 【发布时间】:2020-10-16 17:20:59 【问题描述】:

我想知道EXPRESS是如何解析的;我在任何地方都找不到任何有用的参考。我想具体了解一下EXPRESS,这个网址www.example.com/page?id=1&id=2&id=3.....id=n是怎么处理的

【问题讨论】:

这能回答你的问题吗? Correct way to pass multiple values for same parameter name in GET request 不,它谈论哪种方法更好,而不是它们如何工作。另外,我认为每个框架都有自己的解析方式,特别是对于这种极端情况,这就是我提到 EXPRESS 的原因。我在问之前看到了。还是谢谢! Express中的QueryParser是可配置的,默认配置(“扩展”)使用qs解析查询字符串,简单模式使用Node原生的查询解析器querystring,也可以自己定义解析器。我从链接的文档中找不到任何关于双名的内容,但您可以对其进行测试。 嘿@Teemu,感谢您的回复,正如您所提到的,我发现了一些相关性。据我了解,它将它们存储在一个数组中,我认为这是绕过过滤器以包含本地文件的好方法。我只想要一些支持类似论点的具体文档或 RFC 部分。 正如 Eduardo 在 suggested dup 中所说的,“没有定义的标准”,您必须检查实现的文档,在这两种情况下不'似乎不包含想要的信息。因此,找出答案的唯一方法是测试...... 【参考方案1】:

您可以使用通常的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

【讨论】:

以上是关于多个同名查询参数的主要内容,如果未能解决你的问题,请参考以下文章

如何从PHP中的URL获取多个同名参数并将所有记录插入表中

在Angular 11中添加多个同名参数

发送具有多个同名参数的 HTTP 请求

具有多个同名参数的函数如何工作?

C# ADO.NET IBM DB2 命名参数同名抛出没有足够的参数指定异常

什么是方法重载?可以定义两个同名但参数类型不同的方法吗?