如何处理flushHeaders之后的错误?
场景:在业务接口中有个下载的接口。需要临时生成数据提供下载。生成的数据比较慢。所有提前返回了返回头,这样可以早点开始下载体验比较好。这时候,加了个判断,当数据量超过多少的时候抛错。如何比较好的响应这个需求?
1、由于抛错只是个别情况,不想影响到普通用户的体验,response头不想后移; 2、直接抛错的话,由于返回头已发出,会导致生成错误的excel文件; 3、如果给出合法的excel,在excel中抛错,怕用户不打开excel,不知道出错就发出去了; 4、是否可以让下载直接失败,例如chrome下载中提示的:下载失败,网络错误?目前想这么处理,但未找到实现方式; 5、http协议中是否有其他合法的方式能在response header 发出后补救抛错的?
2 回复
我想的是,你创建一个下载任务,然后这个下载任务去生成临时数据,然后request 来请求这个任务的结果,如果这个任务失败,就返回失败呗。
只用 http 一个请求,我只能想到用 Transfer-Encoding:chunked 方式。 中途强行报错的话,看能不能利用一下 chunk-extension 或 trailer (不过似乎浏览器都会忽略)