在我正在处理的网络服务中,我需要实现一个带有查询参数的 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:
- Primitive Types
- Types that have a constructor that accepts a single
String
argument.- Types that have a static method named
valueOf
with a singleString
argument.List<T>
,Set<T>
, orSortedSet<T>
where<i>T</i>
satisfies 2 or 3 above.
关于java - 在 Jersey 中处理多个查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6154861/