从Angular客户端对Web API 2服务器的一个API调用通过大量SQL查询和处理动态生成XLSX文件。最多可能需要五分钟才能生成所有数据,并通过文件下载将其返回给客户端。显然这很糟糕,因为即使页面仍在加载中,Chrome到那时仍显示错误。
感觉就像在这里,我将使用状态代码202告诉客户端它收到了请求,但是在此之后我不确定如何将文件实际发送回客户端。
我唯一能想到的是,服务器在创建文件后会生成一个后台任务,该任务会将文件写入特定的临时位置,然后另一个API调用将下载该文件(如果存在)并将其从其中删除临时位置。
是我要做的,然后让客户端定期轮询该文件吗?不能预生成文件,因为它必须具有实时数据(当然是在请求时)。
答案 0 :(得分:0)
感觉就像是在这里我要使用状态代码202告诉客户端它收到了请求,但是我不确定之后如何将文件实际发送回客户端。
通常,HTTP 202附带一个位置标头和一个指示资源何时何地可用的指示符。 还有一种可能性是向状态监视器添加链接,如here所述。
要实现此目的,您可以为该进程生成一个ID,并将其用于位置标题url中以指向结果。
客户端应该准备就绪后,客户端便可以获取该资源。这意味着您需要一些短期的持久性。