gpt4 book ai didi

spring - 如何记录生成文件 (pdf) 以便在 Swagger 上下载的 API?

转载 作者:行者123 更新时间:2023-12-02 09:30:17 32 4
gpt4 key购买 nike

我正在尝试寻找某种方法来记录返回 PDF(或任何其他文件)以供下载的 API。

使用Spring,我的Rest资源是这样的:

@Override
@GetMapping(produces = "application/pdf")
public ResponseEntity<InputStreamResource> find(
@PathVariable long id
) {

Result result = service.find(id);

HttpHeaders headers = disableCache();

return ResponseEntity
.ok()
.headers(headers)
.contentLength(result.getSize())
.contentType(MediaType.parseMediaType("application/pdf"))
.body(new InputStreamResource(result.getFileInputStream()));
}

这对于下载文件非常有效。但我不知道使用 Swagger 记录响应的良好做法。

实际上,我尝试使用 Swagger 注释:

@ApiOperation(value = "Some description")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Success.")
})
@ResponseStatus(HttpStatus.OK)
@GetMapping(produces = "application/pdf")
ResponseEntity<InputStreamResource> find(
@PathVariable long id
);

但是 Swagger 在 Swagger-ui 上将 InputStreamResource 的内容返回为 Json,这不是结果。

如何在 Swagger 响应中表示文件下载?

最佳答案

让我们尝试像这样更新您的代码:

  1. 更新 header :
headers.add("Content-Type", "application/pdf");
headers.add("Content-Disposition", "attachment; filename=report.pdf");
  • 使用此注释:
  • @ApiResponses(value = {
    @ApiResponse(code = 200, message = "Success.", response = byte.class)
    })
  • 更新 pom:
  • <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
    <exclusions>
    <exclusion>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-annotations</artifactId>
    </exclusion>
    <exclusion>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-models</artifactId>
    </exclusion>
    </exclusions>
    </dependency>
    <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
    </dependency>
    <dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-annotations</artifactId>
    <version>1.5.21</version>
    </dependency>
    <dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-models</artifactId>
    <version>1.5.21</version>
    </dependency>

    希望有帮助。

    关于spring - 如何记录生成文件 (pdf) 以便在 Swagger 上下载的 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48546123/

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