【问题标题】:How can I transfer data while generating it using REST API?如何在使用 REST API 生成数据时传输数据?
【发布时间】:2019-09-15 19:21:00
【问题描述】:

如何在使用 REST API 生成时传输数据而不将其存储在任何临时内存存储中?

基本上我有一些数据存储在数据库中,理想情况下我需要将其写入文件,将其存储在服务器中并传输到客户端。但是服务器有空间限制,不允许我存储这么大的文件。这种情况我该怎么办?

【问题讨论】:

  • 正确解释你的问题
  • @Abhijeet 用解释编辑了我的问题。不确定它是否解释得很好:(
  • 文件大小是多少?您是从数据库记录创建文件并希望将其传输给客户端吗?
  • @Abhijeet 文件大小可能是 GB,第二个问题的答案是“是”。
  • 分块编码响应有用吗?如果来自数据库的数据太大而服务器无法处理,请尝试对数据库查询结果集进行分页并使用分块编码将其全部发送回stackoverflow.com/questions/28768508/…

标签: java rest spring-mvc


【解决方案1】:

不知道这是否适合您的方案,如果有人有比这更好的解决方案,请提供。限制是您的服务器上的大小有限。以下是我解决您问题的方法

  1. 目前,您有一个 REST API (FilePart API),它部署在一台存储空间有限的服务器上。 (我们称之为服务器 1)
  2. 将此 FilePart REST API 部署在服务器 1 上,以根据分页数据创建文件部分(而不是整个文件)并返回生成的部分文件。
  3. 在另一台服务器(我们称之为服务器 2)上再部署一个应用程序(FileCombine API),它将调用服务器 1 上的 FilePart REST API 并将 pageNo 和 pageSize 作为参数发送。此调用将接受生成的 filePart 作为响应并存储在服务器 2 上。
  4. FileCombine API 将多次调用 FilePart API,直到下载所有部分。
  5. 在服务器 2 上下载所有部件后,FileCombine API 将合并所有文件部件并将其发送回客户端。

所以你的架构会是这样的。

Client --calls--> FileCombineAPI(Server 2) --mutliple calls--> FilePartAPI(服务器 1)

服务器 1:空间有限。

服务器 2:有足够的空间来处理操作。

【讨论】:

    猜你喜欢
    • 2019-10-29
    • 2020-12-06
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多