如何在Java API中发送多个信息

问题描述 投票:0回答:1

我正在构建一个java API,它将从数据库中提取数据并写入CSV文件, 所以我写了如下代码:

InputStreamResource filecontent = //generate csv file
return ResponseEntity.ok().header(Httpheaders.CONTENT_DISPOSITION,"attachment; filename="+ createdfilename).contentType(MediaType.parseMediaType("application/csv").body(filecontent);

现在由于数据库记录增长巨大, 我已将数据检索转换为可分页。

现在我想在 API 响应中发送文件内容和可分页数据响应,如下所示:

    Response --> clickable download link and  
                 {
                   totalitems:"",
                   current page:"",
                   noofpage:""
                 }

有人可以指导如何在 Java API 中执行此操作吗?

java spring-boot performance spring-data-jpa
1个回答
0
投票

可以使用以下方法来轻松传递分页和排序参数:

@GetMapping
ResponseEntity<Page<PostDto>> getPostList(Pageable pageable) {
    final Page<PostDto> response = postService.getPostList(pageable);
    // code omitted
}

上述方法签名导致 Spring MVC 尝试使用以下默认配置从请求参数派生 Pageable 实例:

• 页面 - 您要检索的页面。 0 索引,默认为 0。
• size - 您要检索的页面的大小。默认为 20。
• sort - 应按格式排序的属性
• 属性,属性(,ASC|DESC)(,IgnoreCase)。默认排序方向是区分大小写的升序。

如果要切换方向或区分大小写,请使用多个排序参数 — 例如,?sort=firstname&sort=lastname,asc&sort=city,ignorecase。

供参考:Spring Docs - 用于可分页和排序的HandlerMethodArgumentResolvers

以下是 API 调用示例: {{baseUrl}}/api/v1/comments?page=0&size=10&sort=comment,desc

或者;

@GetMapping
ResponseEntity<ApiResponse<Page<PostInfo>>> getPosts(
        @RequestParam(name = "page", defaultValue = DEFAULT_PAGE) 
final Integer page,
        @RequestParam(name = "size", defaultValue = DEFAULT_SIZE) final Integer size) {
    // Pageable pageable = Pageable.ofSize(size).withPage(page);
    Pageable pageable = PageRequest.of(page, size);
    final Page<PostInfo> response = postService.getPosts(pageable);
    return ResponseEntity.ok(new ApiResponse<>(Instant.now(clock).toEpochMilli(), SUCCESS, response));
}
© www.soinside.com 2019 - 2024. All rights reserved.