我正在研究在 GET 请求中为同一参数名称传递多个值的正确方法是什么。
我见过这样的网址:
http://server/action?id=a&id=b
http://server/action?id=a,b
我的理解是第一个是正确的,但我找不到任何参考。我查看了 http 规范,但看不到任何关于 URL 的“查询”部分应该如何构成的信息。
我不想要一个说“两者都可以”的答案——如果我正在构建一个 web 服务,我想知道这些方法中的哪一个是标准的,以便使用我的 web 服务的人知道如何为同名传递多个参数。
那么,有人可以向我指出官方参考来源以确认哪个选项是正确的吗?
事实上,没有明确的标准。要支持该信息,请查看维基百科的查询字符串章节。有以下评论:
虽然没有明确的标准,但大多数 Web 框架允许将多个值与单个字段相关联。[3] [4]
此外,当您查看RFC 3986时,在第3.4 节 Query中,没有定义具有多个值的参数。
大多数应用程序使用您显示的第一个选项:http://server/action?id=a&id=b. 要支持该信息,请查看此Stackoverflow 链接和有关 ASP.NET 应用程序的此MSDN 链接,它们对具有多个值的参数使用相同的标准。
但是,由于您正在开发 API,我建议您做对您来说最简单的事情,因为 API 的调用者在创建查询字符串时不会遇到太多麻烦。