通过GET参数传递复杂的数据结构



我正在尝试将列表和映射作为GET参数传递,我想知道是否有特定的约定(或者最好是库)可以实现这一点。特别是,我想传递列表和映射。

列表相对容易,因为我们正确地对分隔符进行URL编码(在本例中,是逗号):

/图片/小猫?furColors=棕色、黑色

地图更为复杂。我见过这样的东西:

/图片/小猫?properties[furColors]=棕色,黑色&properties[eyeColors]=蓝色

我也见过这样的东西:

/图片/小猫?properties=furColors%3Brown,黑色;eyeColors%3Blue;

有没有一个好的标准可以让我遵循?此外,我碰巧正在使用Java和Spring(原因超出了我的控制范围),我希望能够使用一个库来处理这一问题,最好是一个Spring可以解析其字符串的库。

您可以传递JSON数组或对象。为什么不使用现有的、完善的标准,而不是发明自己的标准呢?

或者,原蟾蜍可能更适合。

我宁愿做任何能发展和维护自己的事情。我很懒。

注意GET请求字符串的1024字节限制。你只能如此复杂。

从谷歌商业搜索api中获取页面,特别是限制部分,他们基本上会在其中传递限制地图,如

&restrictBy=key1=val1,key2=val2,key3=val3

这与您的选择非常相似。我不知道有任何公布的最佳实践或标准,我甚至不相信谷歌的支持与过去一样重要,但至少它已经完成并正在生产中。

至于一个库,使用几个适时的String.split就可以了,或者你可以看看Guava的MapSplitter。

最新更新