我有一个休息API服务器,它有以下API。我有一些其他的API,在那里我从GET
请求中获得可分页。这里,我需要发出一个post请求来传递queryDto。所以,我不能将page=0?size=20
等作为url参数传递。
我想知道如何将可分页作为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);
}
5条答案
按热度按时间myzjeezk1#
我认为这是不可能的,至少框架还没有提供。
Spring有一个
HandlerMethodArgumentResolver
接口,该接口带有一个名为PageableHandlerMethodArgumentResolver
的实现,该实现通过调用HttpServletRequest.getParameter之类的函数来检索请求参数值。因此,您可以绑定Pageable示例,为GET和POST传递参数"page"和"size"。因此,以下代码可以正常工作:$curl-X开机自检--数据"页面= 10且大小= 50" http://localhost:8080/test
返回:页面请求[编号:10,尺寸50,排序:无效]
但是,如果您传递一个json,则什么也不会发生:
$curl-X开机自检--数据"{第10页和大小:50}" http://localhost:8080/test
返回:页面请求[编号:0,大小20,排序:无效]
mi7gmzs62#
Spring柱法
Postman 示例:
在上面的POST中,Pageable用于Spring RESTful服务中的排序和分页。在URL中使用以下语法。
编号
0
,大小20
,排序依据字段titleListId
和方向DESC
Pageable将所有传递参数内部识别为排序/分页参数,如下所示
更新:Angular 示例:客户组件.ts文件
客户服务.ts
0dxa2lsx3#
如果您继续在URL上提供它们作为查询参数,并且仍然在中发布数据,那么对我来说似乎工作得很好。
Spring似乎将页面、大小、排序等转换为在进入过程中提供给方法的Pageable。
twh00eeo4#
创建一个包含Pageable和QueryDto对象的类,然后在这个新对象的post体中传递JSON。
例如,
ttisahbt5#
样本
在您的情况下,请尝试在QueryDTO中添加分页变量,以创建一个Pageable对象并将其传递给service
我想那会解决:)