如何在spring-mvc中为REST查询提供对象列表?

时间:2015-01-23 13:20:07

标签: java spring rest spring-mvc

我想在spring-mvc中创建一个REST-GET控制器,它接受一个对象列表,例如10个ID,如下所示:

@RestController
public class MyRest {
   @RequestMapping(method = RequestMethod.GET)
   public Object test(@RequestParam value="id" required=false) List<Integer> ids) {
    Sysout(ids);
  }
}

无论如何,当我打电话时,我必须多次重复id param:

localhost:8080/app?id=1&id=2&id=3&...

可以将参数更改为某种列表吗?例如

 app?id=1,2,3,4,5

如果是的话,这是否可取?从客户的角度来看,哪个更好?

2 个答案:

答案 0 :(得分:3)

最好使用带有JSON或XML的POST消息作为请求体。 因为你永远不知道会传递多少个。

@RestController
public class MyRest {
   @RequestMapping(method = RequestMethod.POST)
   public Object test(@RequestBody IDRequest request) {
    Sysout(ids);
  }
  public static final class IDRequest {
    List<Integer> ids;
    <!-- getter/setters--->
  }
}

请求将是某种类型的JSON或XML

{"ids":[1,2,3,4,5,6,7,8,9]}

答案 1 :(得分:1)

您可以提供休息服务的对象列表作为请求参数。这是示例

@RequestMapping(value = "/animals, method = RequestMethod.GET)
   public void test(@RequestParam(value="animalsNames[]") String[] animalsNames) {
    Sysout(animalsNames);
  }

您的请求似乎是

http://localhost:8080/appname/animals?animalsNames[]=dog,horse  
HTTP Method type : GET