在URL中使用重复参数

Jus*_*tin 13 standards url-parameters

我们在内部构建API,并且经常传递具有多个值的参数.

他们使用:mysite.com?id = 1&id = 2&id = 3

而不是:mysite.com?id = 1,2,3

我赞成第二种方法,但我很好奇第一种方法实际上是不正确的吗?

Nat*_*han 8

我不是HTTP大师,但根据我的理解,关于多个值的URL的查询部分没有明确的标准,通常由处理解析查询字符串的请求的CGI决定.

RFC 1738第3.3节提到了a searchpart它应该追求?但似乎没有详细说明它的格式.

http://<host>:<port>/<path>?<searchpart>


Ray*_*Luo 5

我没有(费心)检查哪个 RFC 标准定义了它。(对此有了解的人请在评论中留下参考。)但在实践中,mysite.com?id=1&id=2&id=3方式已经是当表单包含重复字段(通常是复选框)时浏览器的生成方式。在此w3schools 示例页面中查看其实际效果。因此,无论您使用什么编程语言,很有可能已经提供了一些辅助函数来解析这样的输入,并可能返回一个列表。

当然,您可以采用自己的方法,例如mysite.com?id=1,2,3,在这种特殊情况下这一点也不坏。但是您需要实现自己的逻辑来生成和使用这种格式。现在,您可能需要也可能不需要考虑自己处理一些极端情况,例如:如果输入格式不正确怎么办,例如mysite.com?id=1,2,?如果逗号符号本身也可以是有效的输入(例如 ),您是否还需要发明另一个分隔符mysite.com?name=Doe,John|Doe,Jane?您是否会使用 json 字符串作为值,例如mysite.com?name=["John Doe", "Jane Doe"]?等等等等。您的里程可能会有所不同。