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

mem*_*und 5 java rest spring spring-mvc

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

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

无论如何,当我调用它时,我必须多次重复 id 参数:

localhost:8080/app?id=1&id=2&id=3&...
Run Code Online (Sandbox Code Playgroud)

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

 app?id=1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)

如果是,这是否可取?从客户的角度来看,什么更好?

Bab*_*abl 2

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

@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--->
  }
}
Run Code Online (Sandbox Code Playgroud)

其中请求将是某种 JSON 或 XML,如下所示

{"ids":[1,2,3,4,5,6,7,8,9]}
Run Code Online (Sandbox Code Playgroud)