gpt4 book ai didi

list - Dropwizard/泽西 : Pass query-parameter with multiple values as List (maybe using a filter)

转载 作者:行者123 更新时间:2023-12-05 06:43:57 26 4
gpt4 key购买 nike

我有客户像这样传递 ID:/v1/path?id=1,2,3

我拥有的和想要的

我有一个 Dropwizard/Jersey 的资源类。我想在资源的 GET 方法中将查询参数 id=1,2,3 显示为 List 参数

// Resource class

public List<Something> getFilteredList(@QueryParam("id") List<String> ids) {
// filter the List<Something> based on a list of ids
}

现在,ids 列表包含 1 个字符串,即 "1,2,3"

我尝试了什么

我尝试了一个过滤器,但是 Jersey's 给出的查询参数ContainerRequestContext.getUriInfo().getQueryParameters()是不可变的。

问题

我想应用过滤器并将任何逗号分隔的查询参数更改为多值参数,以便资源方法获取列表。

  1. 有没有办法使用 Jersey 过滤器更改现有的查询参数?
  2. 解决这个问题的好方法是什么?

最佳答案

我能想到的最好的方法就是为列表创建一个包装类。这使得更容易利用 Jersey 的指定功能。你可以在 Passing custom type query parameter 看到我的意思.

例如

public class IdFilter {
private List<String> ids = new ArrayList<>();
public List<String> getIds() { return ids; }

public static IdFilter valueOf(String param) {
IdFilter filter = new IdFilter();
for (String id: param.split(",") {
filter.getIds().add(id);
}
}
}

getFilteredList(@QueryParam("id") IdFilter ids) {

我们不需要做任何其他事情。只需拥有 static valueOf 就足以让 Jersey 知道如何解析查询字符串。

关于list - Dropwizard/泽西 : Pass query-parameter with multiple values as List (maybe using a filter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31457873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com