【发布时间】:2020-03-08 09:29:25
【问题描述】:
在 REST 端点中,我想接收过滤器作为查询参数。每个过滤器都定义在一个用逗号分隔的键值对中,如下所示:
www.example.com/things?filter=key:value,key2:value2,key3:value3
这个例子意味着我想要得到的东西列表必须有 key 作为value,和 key2 作为value2 和强> key3 as value3
在此端点中,我可以接收多个过滤器,如下所示:
www.example.com/things?filter=key:value&filter=key2:value2,key3:value3
这意味着事物列表必须有key 为value 或(key2 为value2 和key3 为value3)
在spring-boot中,接收多个同名查询参数的方法是在你的控制器中定义一个@RequestParam("filter") String[] filters。但问题是:每当我只发送一个filter 查询参数时,我都会得到一个由每个键对值组成的字符串数组。如果我发送多个filter,我会得到一个包含每个过滤器的数组(如预期的那样)。
这意味着对于第一个示例,每个密钥对都有一个大小为 3 的数组,而在第二个示例中,我将收到一个大小为 2 的数组。
我需要这样,每当我只发送一个 filter 作为查询参数时,@RequestParam 标记都会提供一个大小为 1 的数组,其中整个字符串将在以后进行解析。有没有办法做到这一点?
【问题讨论】:
标签: java spring-boot query-parameters