如何在 RestEasy 中支持逗号分隔的列表查询参数
How to support comma separated list queryParam in RestEasy
在 RestEasy 中使用列表作为 QueryParam 时,(@QueryParam 列表字符串),
以下 url 工作正常 -
?字符串=123&字符串=456
这行得通,您会得到包含 2 个值的列表。
但是当你按如下方式传递值时 -
?字符串= 123,456
它给出“123,456”作为单个值,这不是预期的行为。
如何获取 strings=123,456 作为 123 和 456 的列表。
一个选项是为 Set 创建 Provider class 并修改 fromString 和 toString 方法,在此 strings=123,456 开始工作后,它给出包含两个元素 123 和 456 的列表,但 strings=123&strings= 456 现在不工作,它给出的列表只有一个元素 123.
让我知道如何在 RestEasy QueryParam 中获得这两种行为。
我通过实施 ContainerRequestFilter 解决了这个问题,并在过滤器方法中更新了实际的 URL 并将其设置回 requestContext。
例如原文 URl -
http://localhost:8080/api?tags=123,456
在 RestEasy 中使用列表作为 QueryParam 时,(@QueryParam 列表字符串), 以下 url 工作正常 - ?字符串=123&字符串=456 这行得通,您会得到包含 2 个值的列表。
但是当你按如下方式传递值时 - ?字符串= 123,456 它给出“123,456”作为单个值,这不是预期的行为。
如何获取 strings=123,456 作为 123 和 456 的列表。
一个选项是为 Set 创建 Provider class 并修改 fromString 和 toString 方法,在此 strings=123,456 开始工作后,它给出包含两个元素 123 和 456 的列表,但 strings=123&strings= 456 现在不工作,它给出的列表只有一个元素 123.
让我知道如何在 RestEasy QueryParam 中获得这两种行为。
我通过实施 ContainerRequestFilter 解决了这个问题,并在过滤器方法中更新了实际的 URL 并将其设置回 requestContext。 例如原文 URl - http://localhost:8080/api?tags=123,456