【问题标题】:JAX-RS query with multiple parameters of the same name具有多个同名参数的 JAX-RS 查询
【发布时间】:2017-02-22 16:29:51
【问题描述】:

我想创建一个 Web 服务,您可以在其中查询通用数据。所以,我的网址应该是这样的:

.../field_name/Country/field_value/US/field_name/City/field_value/波士顿

用 Jersey 读取它的方式是什么 - 我想获得一个字段名称数组和一个相应的字段值数组。

【问题讨论】:

  • 为什么不只是美国/波士顿?为什么需要field_name/Country/field_value
  • 名称是动态的,我不知道顺序,我希望客户告诉我他们要过滤什么

标签: java web-services rest jersey jax-rs


【解决方案1】:

这似乎更适合查询参数,而不是上面的 url 参数。

您的网址将如下所示:

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

JAX-RS 通过将它们映射到端点中的集合来支持多个同名查询参数,如下所示:

@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
}

【讨论】:

  • 我从我解析的文件中获取参数,因此它们在运行时可用,但在编译时不可用。我想我需要第二种方法并解析 uriInfo
  • 它是否也适用于 @POST@FormParams 的查询?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多