小编典典

在 GET 请求中为相同参数名称传递多个值的正确方法

all

我正在研究在 GET 请求中为同一参数名称传递多个值的正确方法是什么。

我见过这样的网址:

http://server/action?id=a&id=b

我见过这样的网址:

http://server/action?id=a,b

我的理解是第一个是正确的,但我找不到任何参考。我查看了 http 规范,但看不到任何关于 URL 的“查询”部分应该如何构成的信息。

我不想要一个说“两者都可以”的答案——如果我正在构建一个 web 服务,我想知道这些方法中的哪一个是标准的,以便使用我的 web
服务的人知道如何为同名传递多个参数。

那么,有人可以向我指出官方参考来源以确认哪个选项是正确的吗?


阅读 74

收藏
2022-05-12

共1个答案

小编典典

事实上,没有明确的标准。要支持该信息,请查看维基百科的查询字符串章节。有以下评论:

虽然没有明确的标准,但大多数 Web 框架允许将多个值与单个字段相关联。[3]
[4]

此外,当您查看RFC 3986时,在第3.4 节
Query
中,没有定义具有多个值的参数。

大多数应用程序使用您显示的第一个选项:http://server/action?id=a&id=b. 要支持该信息,请查看此Stackoverflow
链接
和有关 ASP.NET 应用程序的此MSDN
链接
,它们对具有多个值的参数使用相同的标准。

但是,由于您正在开发 API,我建议您做对您来说最简单的事情,因为 API 的调用者在创建查询字符串时不会遇到太多麻烦。

2022-05-12