Web Services 具有多个同名参数的JAX-RS查询

fzsnzjdm  于 2022-11-15  发布在  其他
关注(0)|答案(3)|浏览(148)

我想做一个Web服务,你可以在那里查询通用数据。所以,我的URL应该是这样的:
.../字段名称/国家/字段值/美国/字段名称/城市/字段值/波士顿
我想得到一个字段名数组和一个对应的字段值数组。

6psbrbz9

6psbrbz91#

这似乎更适合查询参数,而不是上面的url参数。
您的网址将类似于:

/query?Country=US&City=Boston&City=Chicago

JAX-RS通过将多个查询参数Map到端点中的Collection来支持同名的多个查询参数,如下所示:

@GET
@Path("/query")
public String queryValues(@QueryParam("Country") List<String> countries,
                          @QueryParam("City") List<String> cities) {
   // Do work here
}

如果查询参数是完全动态的,并且直到运行时才知道它们是什么,则可以注入UriInfo对象并自己询问查询字符串。

@GET
@Path("/query")
public String queryValues(@Context UriInfo uriInfo) {
   // Do work here
}
moiiocjp

moiiocjp2#

关于您的查询,您也可以使用以下逗号分隔格式:

/query?Country=US&City=Boston,Chicago
xghobddn

xghobddn3#

添加观察:对于Jersey 2.35 FormParam,它需要是City=Boston&City=芝加哥样式,然后可以成为列表或集合的元素。

逗号分隔的参数值(例如City=Boston,芝加哥)似乎不起作用。它将其作为单个值(用Postman测试)

相关问题