GetMapping 使用 Spring Boot 生成 CSV 文件

GetMapping to produce CSV file using Spring Boot

我正在编写一个 spring 休息方法以从数据库中获取详细信息并将其设置在响应 POJO 中,然后 return 它。当前,当使用 POSTMAN 或 RC 像带有数据的可下载 CSV 文件一样点击 URL 时,我需要以 CSV 格式而不是默认 json 生成此响应。我用谷歌搜索了很多网站,但不确定其中的逻辑。

  1. 我们是否需要编写业务逻辑来将 pojo class 值转换为 csv 格式或 spring 是否有任何转换机制?
  2. Produces = "text/csv" 在很多地方都提到了,这个转换响应正确吗?

目前我还没有编写任何 CSV 转换代码。

@GetMapping("/batch/export" , produces="text/csv")
public ResponseEntity<ApplicationResponse> getBatchDetails(
        HttpServletRequest request) {

    ApplicationRequest appRequest = ApplicationServiceMapper.mapRequestFromHttpRequest(request);
    ApplicationResponse response = appService.getDBDetails(appRequest);
    return new ResponseEntity<>(response, HttpStatus.OK);

}

这里的响应是为 return 提供 pojo 格式的所有数据的响应,如果我们不在注释中给出生成,那么默认情况下 spring 将 return 响应json。有人可以指导我吗?提前致谢。

仅仅使用 @GetMappingproduces="text/csv" 是不够的。它只负责设置响应头Content-Type: text/csv.

您需要将响应添加为参数 HttpServletResponse response,将您的 POJO 转换为有效的 csv 文件,然后才写入 csv文件进入 HttpServletResponse.