Spring Boot 如何使用OpenAPI生成Excel并下载?

mu0hgdu0  于 2023-11-17  发布在  Spring
关注(0)|答案(1)|浏览(238)

我有以下端点,它创建一个Excel文件,并将其添加到outputstream.我想查看Excel,并检查它是否正确构造,但我无法通过OpenAPI下载它. OpenAPI下载一个txt文件,而不是Excel,当更改扩展名和打开Excel时,我得到有关文件格式的错误.
Java端点代码段

@ApiResponses(value = {
          @ApiResponse(responseCode = "200", content = @Content(mediaType = "application/vnd.ms-excel"))
  @PostMapping(value = "/download-excel")
  @ResponseStatus(HttpStatus.OK)
  public void getExcelForIds(
          @RequestBody List<Long> ids,
          HttpServletResponse response
  ) throws IOException {
    response.setContentType("application/vnd.ms-excel");
    response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "inline;filename=\"myfilename.xlsx\"");
    excelWriter.writeIdsToExcel(ids, response.getOutputStream());
  }

字符串
来自OpenAPI

的响应

k7fdbhmy

k7fdbhmy1#

这只是一个错误的呈现问题。OpenAPI响应已经表明它不识别响应类型。这并不意味着它是一个错误的响应,只是OpenAPI不支持它的呈现。它试图将其呈现为文本,但也失败了。菱形中的所有问号都是无法正确转换为字符的字节-因为它们不是字符。
当你把这个错误的响应复制到一个文件中并命名为.xlsx时,你的文件并不包含来自服务器的实际响应,所有那些不能格式化的字节都被修改了。
要正确地测试这一点,请使用更好的工具:

  • 您的浏览器
  • Postman
  • curl
  • ...

相关问题