java - 在 Jersey 中处理多个查询参数

标签 java rest path jersey

在我正在处理的网络服务中,我需要实现一个带有查询参数的 URI,类似于 /stats?store=A&store=B&item=C&item=D

为了分解它,我需要能够使用查询参数来指定来自多个/所有商店的数据以及来自这些商店的多个/所有商品的数据。到目前为止,为了提取项目数据,我已经能够很好地实现一个查询参数,但是我对如何实现更多查询一无所知,而且似乎找不到我之前见过的资源哪笔交易有了这个实现。

到目前为止,我的方法是遵循以下原则

@GET
@Path("stats")
public String methodImCalling(@DefaultValue("All") @QueryParam(value = "item") final String item)
{
    /**Run data using item as variable**/
    return someStringOfData
}

它适用于一项,如果我不在 URI 中键入参数,它将返回所有数据。但是,我不确定如何处理比这更多的参数。

更新:

我已经弄清楚如何通过简单地向方法添加第二个参数来使用 2 个不同的参数,如下所示:

public String methodImCalling(@DefaultValue("All") @QueryParam(value = "store") final String store,
    @DefaultValue("All") @QueryParam(value = "item") final String item)

问题仍然是如何实现同一参数的多个值。

最佳答案

如果您更改 item 的类型方法参数来自 String到一个集合,例如 List<String> ,你应该得到一个包含你正在寻找的所有值的集合。

@GET
@Path("/foo")
@Produces("text/plain")
public String methodImCalling(@DefaultValue("All") 
                              @QueryParam(value = "item") 
                              final List<String> item) {
   return "values are " + item;
}

JAX-RS 规范(第 3.2 节)对 @QueryParam 做了以下说明注释:

The following types are supported:
  1. Primitive Types
  2. Types that have a constructor that accepts a single String argument.
  3. Types that have a static method named valueOf with a single String argument.
  4. List<T>, Set<T>, or SortedSet<T> where <i>T</i> satisfies 2 or 3 above.

关于java - 在 Jersey 中处理多个查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6154861/

相关文章:

java - Google API - 重定向 URI 不匹配错误

java - 找不到资源时抛出异常是否正确

php - 使用 PHP cUrl 发送后解码 JSON

silverlight 获取文件路径

c# - 在另一台计算机上打开文件C#

java - 在 Camel 中将远程 PDF 作为 application/pdf 返回

java - 使用 JSONObject 和 JSONArray 创建 json 字符串

java - 如果没有安装 Java,带有捆绑 JRE 的应用程序将无法运行

Windows PATH 到 bash 中的 posix 路径转换

python - 没有设置密码。 django 保存没有表单的用户