需要 5 分钟才能完成的 REST 文件下载



从我的 Angular 客户端对我的 Web API 2 服务器进行的 API 调用之一通过大量 SQL 查询和处理动态生成 XLSX 文件。 这可能需要长达五分钟的时间才能生成所有数据,并通过文件下载将其返回到客户端。 显然这很糟糕,因为即使页面仍在加载,Chrome 也会显示错误。

感觉就像这是我使用状态代码 202 告诉客户端它收到了请求的地方,但在那之后我不确定如何将文件实际发送回客户端。

我唯一能想到的是,服务器生成一个后台任务,该任务将在创建文件后将文件写入特定的临时位置,然后另一个 API 调用将下载该文件(如果存在)并将其从临时位置删除。

这就是我所做的,然后让客户端定期轮询该文件吗? 预生成文件不是一种选择,因为它必须具有实时数据(当然是在请求时)。

感觉就像

这是我使用状态代码 202 告诉客户端它收到了请求的地方,但在那之后我不确定如何实际将文件发送回客户端。

通常,HTTP 202 带有位置标头和资源可用位置和时间的指示器。 也可以添加指向状态监视器的链接,如此处所述。

为此,您可以为该进程生成一个 id,并在位置标头 url 中使用它来指向结果。

然后,客户端能够在资源应准备就绪时获取该资源。这意味着您需要一些短期的持久性。

最新更新