Java JAX-RS处理FormParam的可变数量

Java JAX-RS处理FormParam的可变数量,java,rest,jax-rs,Java,Rest,Jax Rs,在Java中,我实现了一个服务器,客户机可以在其中使用post查询传递一些数据(键值对)。我已经决定做一个REST服务,并计划将JAX-RS与Jetty一起使用 我以前不知道要送到这里的钥匙。有没有办法浏览客户发布的所有KV对?我知道,如果知道密钥,我们可以检索数据,如下所示- @Path("/testpath") public class test { @POST @Path("/level1") public Response getData( @F

在Java中,我实现了一个服务器,客户机可以在其中使用post查询传递一些数据(键值对)。我已经决定做一个REST服务,并计划将JAX-RS与Jetty一起使用

我以前不知道要送到这里的钥匙。有没有办法浏览客户发布的所有KV对?我知道,如果知道密钥,我们可以检索数据,如下所示-

@Path("/testpath")
public class test {

    @POST
    @Path("/level1")
    public Response getData(
        @FormParam("key1") String val1,
        @FormParam("key2") int val2) {

        return Response.status(200)
            .entity("getData is called, Key1 : " + val1 + ", Key2 : " + val2)
            .build();

    }

}
在上面的示例中,我可以拥有不同键的N

我计划使用香草JAX-RS,不带Jersey或RESTeasy。但是,如果在JAX-RS中不可能的话,我愿意接受这些选项

使用:

@Path(“/testpath”)
公开课考试{
@职位
@路径(“/level1”)
@使用(MediaType.APPLICATION\u FORM\u URLENCODED)
@生成(“文本/纯文本”)
公共响应getData(多值映射参数){
StringBuilder sb=新的StringBuilder(“getData被调用,”);
for(字符串参数:params.keySet()){
sb.append(param+”:“+params.getFirst(param)+”,”;
}
返回Response.status(200).entity(sb.toString()).build();
}
}

正是我想要的!非常感谢。我正在尝试完全相同的例子,它不起作用的原因是什么?
@Path("/testpath")
public class test {
    @POST
    @Path("/level1")
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    @Produces("text/plain")
    public Response getData(MultiValuedMap<String, String> params) {
        StringBuilder sb = new StringBuilder("getData is called, ");
        for(String param : params.keySet()) {
            sb.append(param + " : " + params.getFirst(param) + ", ");
        }
        return Response.status(200).entity(sb.toString()).build();
    }
}