当前位置: 首页 > 知识库问答 >
问题:

在Spring Boot应用程序中从Rest API返回大尺寸响应

关志勇
2023-03-14

我正在我的Spring Boot应用程序中使用Rest API。这里的响应大小相当大,从10 MB到100 MB不等。

最初,我实现了如下API:

 @GetMapping("/document/state")
  public ResponseEntity<String> getLucidChartDocumentState(
      @RequestParam(required = true, name = "documentId") String documentId) throws IOException {
    return ResponseEntity.ok()
        .body(lucidChartDocumentService.getDocumentState(documentId).getBody());
  }

我不确定将响应作为响应返回是否是一个好方法。

共有1个答案

严兴言
2023-03-14

理想情况下,您不会将文件内容加载到内存中,否则即使流量相对较大,也会很快耗尽文件内容。

如果您的服务类返回一个InputStream,您可以将其包装到InputStreamResource中,并在响应正文中返回。注意:您应该有办法获得对象的内容长度,而无需将其读取到字节数组。

InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
httpHeaders.setContentLength(contentLength);
return new ResponseEntity(inputStreamResource, httpHeaders, HttpStatus.OK);
 类似资料:
  • 我正在进行一个SpringBoot项目,该项目使用常规MVC机制来公开REST API。 在一个特定的GET API中,我得到了406HTTP响应。 下面是我的控制器方法的样子: AnalysisDetailResponse是使用Lombok创建的(在其他API的情况下,Lombok可以完美地工作) 我已经验证了整个响应对象的内容,它似乎是完美的。然而,响应总是406。 我需要JSON格式的响应,

  • 我希望在spring boot中返回类似以下内容的json响应: 我的RestController如下所示 但我得到的反应是这样的

  • 我想在应用程序运行时找到我的对象大小。我想用千分尺在Grafana中显示我的对象大小。 我的对象像人、学生、...... 我该怎么办? 对象大小像文件大小、对象体积

  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 我试图编写一个方法,它接受@PathVariable参数,并将用户重定向到一个jsp文件。 @pathvariable(value=“customerId”)字符串customerId @pathvariable(name=“customerId”)字符串customerId @pathvariable(“customerId”)字符串customerId 谢谢你的帮助。

  • 我已经用Spring Boot构建了一个应用程序,并将其部署在远程Tomcat服务器中。每当我向应用程序的唯一endpoint发出请求时,我会得到一个404。我将所有上下文路径设置为相同的名称/跟踪器,但仍然没有设置。我不知道我是不是错过了什么。 这是我得到的信息: 源服务器未找到目标资源的当前表示形式,或不愿意透露存在此表示形式。 我正在使用我在我的本地环境中使用的相同的工作完美。 有效载荷 封