如何在REST中接受参数值列表作为输入?

时间:2015-06-10 19:38:27

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

我想使用提供的多个ID来显示有关子部门的信息。这就是我所拥有的。现在,具有多个参数的url示例是什么?我试过逗号,斜线但没有工作

@Path( "{id: .*}" )
@GET
public Collection< SubDepartmentDTO > findMultiple ( @PathParam ( "id" ) List<Integer> idList ) {
    Map< Integer, SubDepartmentDTO > subList = new LinkedHashMap<>();

    int index = 0;
    while( index < idList.size() ){
        subList.put( idList.get(index), SubDepartmentDAO.findOne ( idList.get(index) ) );
        index++;
    }
    return subList.values();
}

1 个答案:

答案 0 :(得分:0)

您无法使用数组作为路径参数,请参阅docs,特别是:

  

带注释的参数,字段或属性的类型必须:

     
      
  • 是PathSegment,该值将是匹配的最后一段   路径的一部分。请参阅UriInfo以获取检索所有请求的方法   路径段。
  •   
  • Be List,该值将是与命名模板匹配的路径段对应的PathSegment列表   参数。有关检索所有请求路径的方法,请参阅UriInfo   段。
  •   
  • 是一种原始类型。
  •   
  • 有一个接受单个String参数的构造函数。
  •   
  • 有一个名为valueOf的静态方法,它接受一个String参数(例如,参见Integer.valueOf(String))。
  •   

如果你想要实现的目标/resource/id/subid/subsubid那么回答这个question会对你有帮助。

但是,如果这种层次结构在您的情况下没有意义,并且您希望获得同一级别的部门列表(即subid1,subid2等),那么您可能希望使用query parameter代替路径参数。