gpt4 book ai didi

java - 在发布请求中传递可分页( Spring 数据)

转载 作者:搜寻专家 更新时间:2023-11-01 01:16:03 26 4
gpt4 key购买 nike

我有一个具有以下 API 的休息 API 服务器。我有一些其他的 API,我可以通过 GET 请求进行分页。在这里,我需要发出一个传递 queryDto 的 post 请求。因此,我无法将 page=0?size=20 等作为 url 参数传递。

我想知道如何将 pageable 作为 JSON 对象传递给 POST 请求

@RequestMapping(value = "/internal/search", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public ResponseList<Object> findObjects(@RequestBody QueryDto queryDto, Pageable pageable) {
if (queryDto.isEmpty()) {
throw new BadRequestException();
}

return someService.findObjectsByQuery(queryDto, pageable);
}

最佳答案

我认为这是不可能的,至少框架还没有提供。

Spring 有一个 HandlerMethodArgumentResolver 接口(interface)和一个名为 PageableHandlerMethodArgumentResolver 的实现,它调用 HttpServletRequest.getParameter 来检索请求参数值。因此,您可以绑定(bind) Pageable 实例,为 GET 和 POST 传递参数“page”和“size”。因此,以下代码有效:

@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

返回:页面请求[number: 0, size 20, sort: null]

关于java - 在发布请求中传递可分页( Spring 数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34889613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com