使用Object作为参数的Jersey服务

时间:2014-07-24 20:44:57

标签: java web-services jersey

我有一些泽西服务如下

      @GET
      @Path("/GetUsers")
      @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
      public List<Campania> findUsers(@QueryParam("userName") String User) {
        List<User> users= userBL.getUsers();
        return users;
      }

我的问题是这个方法应该接收10个参数,所以我宁愿只有一个参数:GetUsersFilter,它包含10个参数。

我知道doint的唯一方法是从@GET更改为@POST,但是,这个服务应该是GET。还有另一种方式吗?

1 个答案:

答案 0 :(得分:2)

您可以使用@BeanParam注释将多个查询参数(和其他内容)捆绑到一个java对象中:

// parameter object that bundles all parameters
public class UserQueryParams {
    @QueryParam("userName")
    private String user;

    @QueryParam("param2")
    private String param2;

    ...
    // getters etc.
}

然后在您的JAX-RS资源方法中,按如下方式使用它:

@GET
@Path("/GetUsers")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public List<User> findUsers(@BeanParam UserQueryParams userQuery) {
    List<User> users = userBL.getUsers(userQuery);
    return users;
}