我是 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
);
}
如果我正确理解你的问题,你不知道参数名称,该名称将在下一个请求中给出。 如果是这种情况,您应该使用 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
}
}