如何显示具有多个ID的集合?

时间:2015-06-10 18:06:33

标签: java web-services rest jax-rs restful-url

我有一组ID已分配给他们的人。我希望用户能够使用多个ID(0到多个)检索人员集合。如果我有一个id作为参数,我可以这样做:

@Path( "{people/id}" )
@GET
public PeopleDTO findOne ( @PathParam( "id" ) int id ) {
    return PersonDAO.findOne( id );
}

如何编写一个类似的方法,用户可以指定多个ID,并为多人提取信息? 或者换句话说,我想输出接受0 ... * ID过滤器的人的集合。

1 个答案:

答案 0 :(得分:2)

由于您没有尝试访问单个资源,因此您尝试访问资源集合,只需要一个子集。这对于像分页这样的事情来说很常见。为此,您可以只使用查询参数进行过滤。例如,您可以使用

.../people?filterIds=1,3,5,6,7,8

然后使用@QueryParam

@GET
@Path("people")
public PeopleDTO getPeople(@QueryParam( "filterIds" ) String id ) {

这可用于获取所有人或已过滤的列表。你只需要解析字符串。首先检查它是否为空,如果是,则它是对完整列表的请求。

您也可以使用面向对象,并使用类似Filtered

的内容
@GET
@Path("people")
public PeopleDTO getPeople(@QueryParam( "filterIds" ) Filtered filtered ) {
    String[] values = filtered.getValues();

您可以查看this,看看是否可以完成。使用像

这样的东西
public class Filtered {

    private String[] values;
    public String[] getValues() { return values; }
    public void setValues(String[] values) { this.values = values; }

    public static Filtered fromString(String param) {
        if (param == null) return null;

        Filtered filtered = new Filtered();
        filtered.setValues(param.split(",");
        return filtered;
    }
}