JAX-RS处理FormParam的可变数量

时间:2014-11-17 13:40:23

标签: java rest jax-rs

在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 的不同键!

我计划使用没有Jersey或RESTeasy的vanilla JAX-RS。但是,如果在JAX-RS中无法实现,我对这些选项持开放态度。

1 个答案:

答案 0 :(得分:2)

使用MultiValuedMap

@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();
    }
}