我有一个其他API服务器,它具有以下API.
我有一些其他的API,我可以从GET请求中分页.在这里,我需要发送一个传递queryDto的帖子请求.所以,我不能将page = 0?size = 20等作为url参数传递.
我想知道如何将可分页的JSON对象传递给POST请求
@RequestMapping(value = "/internal/search", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public ResponseList findObjects(@RequestBody QueryDto queryDto, Pageable pageable) {
if (queryDto.isEmpty()) {
throw new BadRequestException();
}
return someService.findObjectsByQuery(queryDto, pageable);
}
解决方法:
我认为这是不可能的,至少框架没有提供.
Spring有一个HandlerMethodArgumentResolver接口,带有一个名为PageableHandlerMethodArgumentResolver的实现,它检索调用类似HttpServletRequest.getParameter的请求参数值.因此,您可以绑定传递参数“page”和“size”的Pageable实例以进行GET和POST.因此,以下代码有效:
@RequestMapping(value="/test",method = RequestMethod.POST)
@ResponseBody
public String bindPage(Pageable page){
return page.toString();
}
$curl -X POST –data“page = 10& size = 50”http://localhost:8080/test
返回:
页面请求[编号:10,大小50,排序:null]
但是,如果你传递一个json没有任何反应:
$curl -X POST –data“{page:10& size:50}”http://localhost:8080/test
返回:
页面请求[编号:0,大小20,排序:null]
标签:java,spring,rest
来源: https://codeday.me/bug/20190724/1525973.html