首页 > 解决方案 > 如何在使用 HAPI 制作的 REST API 中取消时关闭下载流

问题描述

我已经使用 HAPI 实现了一个 Rest API,它提供了从数据库下载的 CSV。当我使用 an 开始下载并在下载wget http://localhost/csv/download过程中取消它时,服务器会一直推送流直到结束。

代码

async function downloadCsvHandler(request, responseToolkit) {
    let responseStream = new Transform({
        allowHalfOpen: false,
        writableObjectMode: true,
        transform: convertJsonToCsvMethod
    })
    return responseToolkit.response(responseStream)
}

问题

为什么即使取消下载,HAPI 也不关闭流?

标签: node.jsdownloadstreamhapi

解决方案


问题是我曾经stream.pipeline将我的流合并为一个,这导致流启动虽然 HAPI 尚未开始使用。通过使用stream1.pipe(stream2)流在 HAPI 从中读取之前不会激活,这也会导致流在 HAPI 停止时停止。


推荐阅读