JAX-RS 中 @QueryParam 的变量字段名称

问题描述 投票:0回答:1

我是 JAX-RS 的新手,所以如果我在这里做的事情确实偏离了基础,我深表歉意。我正在使用一个外部 API(我无法控制),它要求您首先发送请求以获取查询参数字段列表,然后使用结果作为字段提交另一个请求。

举例来说,我可能会得到一个结果,其中包含我想要的名为

fieldResult
的字段,然后我需要提交一个类似于
/path?fieldResult=value
的新请求。我该如何表示这一点?

我能想到的最接近的是使用

@QueryParam
,但与
@Path
@PathParam
组合不同,似乎没有相应的
@Query
@QueryParam
组合,我找不到任何其他组合解决方案。

public interface SampleInterface {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("{samplePath}")
    Data getData(
          @PathParam("samplePath") String samplePath,
          @QueryParam("{fieldResult}") String value   // something like this, but clearly not exactly
    ); 
}
java jackson jax-rs resteasy
1个回答
0
投票

如果我正确理解你的问题,你不知道参数名称,该名称将在下一个请求中给出。 如果是这种情况,您应该使用 UriInfo 获取查询字符串并从那里获取参数名称。所以像这样(伪代码):

Data getData(
          @PathParam("samplePath") String samplePath,
          @Context UriInfo uriInfo) {

   // get all query params
   MultivaluedMap<String,​String> map =  uriInfo.getQueryParameters();
   // iterate over params and get their value
   for (Map.Entry<String, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + "/" + entry.getValue());
    // do something with parma and its value
   }
   

}
© www.soinside.com 2019 - 2024. All rights reserved.