RESTFull Web服务和文件下载的最佳实践

Jib*_*b'z 5 rest

我目前正在研究RESTFull应用程序,该应用程序可以提供客户端生成的二进制文件。我想知道什么是最佳做法:

  • 使用正确的标头向应用程序发送GET请求,生成文件并写入响应?
  • 向应用程序发送GET请求,生成文件并写入json数据,其中包含文件元数据和指向下载servlet的链接。

Dal*_*vić 5

我的用例是我们可能正在创建一个非常大的文件,创建过程可能需要一段时间。此外,我不希望我的文件创建过程被中断,因为这样做肯定会很昂贵。因此,一个好的解决方案似乎是使用信号生成异步文件。

脚步:

  1. 创建一个新文件,POST /downloads(端点名称示例),响应202 Accepted, Location: /downloads/123(下载的唯一 ID)。如果我们在用户之间共享文件,则相同的 POST 可能会返回相同的 ID(所有用户都在等待生成相同的文件)
  2. 请求文件、GET /downloads/123文件尚未完成、响应102 Processing(以及可选的进度和/或预计到达时间,如果可用)
  3. 请求文件, GET /downloads/123, 文件完成, 响应303 See other, Location: https://cdn/full-path-to-generated.file.pdf

它使您能够创建非常大的文件并花费很长时间,为多个用户重复使用文件创建过程,并将文件生成过程本身从应用程序服务器转移到工作人员。