我有一组ID已分配给他们的人。我希望用户能够使用多个ID(0到多个)检索人员集合。如果我有一个id作为参数,我可以这样做:
@Path( "{people/id}" )
@GET
public PeopleDTO findOne ( @PathParam( "id" ) int id ) {
return PersonDAO.findOne( id );
}
如何编写一个类似的方法,用户可以指定多个ID,并为多人提取信息? 或者换句话说,我想输出接受0 ... * ID过滤器的人的集合。
答案 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;
}
}