我正在研究在GET请求中传递同一参数名称的多个值的正确方式。
我看到过这样的URL:
http://server/action?id=a&id=b
我见过这样的URL:
http://server/action?id=a,b
我的理解是第一种方式正确,但我找不到任何相关的参考资料。我查阅了HTTP规范,但没有找到有关URL“查询”部分应该如何组成的内容。
我不希望得到一个回答说“两种都可以”,如果我正在构建一个Web服务,我想知道哪种方法是标准的,这样使用我的Web服务的人就知道如何传递相同名称的多个参数。
所以,有人能指向官方参考来源以确认哪个选项是正确的吗?
id=a&id=b
表示逻辑与(AND),使用id=a,b
表示逻辑或(OR)。请注意,在这里的逗号表示“或”的含义。 - Alex Skrypnyk?id=5&id=3
这样的参数。在这种情况下,PHP只会读取一个id值。如果我没记错的话,要想使其与PHP一起使用,必须将它写成这样:?id[]=5&id[]=3
。 - What have you triedid=a,b
假设逗号,
是一个有效的分隔符。但是你的参数值可能包含逗号,
。那么客户端需要转义查询参数值中的逗号,
。但你也可以决定使用分号;
更好。这意味着客户端和服务器应该共享 API 的正式分隔符。id=a&id=b
尽管会使 URL 更长,但不会有这个问题。 - Ronan Quillevere