Golang流式响应。将主体放入另一个HTTP请求正文中

时间:2019-04-29 04:10:00

标签: go io

我试图了解HTTP io.Reader上的Go行为以获取响应。 程序概述:

   req1, err := http.NewRequest("GET", url1, nil)
   resp1, err := httpClient.Do(req1)
   req2, err := http.NewRequest("PUT", url2, resp1.Body)
   httpClient.Do(req2)

预计resp1.Body可能会很大(GB的大小)。 我很好奇: Go会完整地读取resp1.Body并将其存储在RAM(或磁盘吗?)中,然后再为第二个请求打开另一个读取器?还是Go足够聪明,可以将主体从resp1直接流式传输到第二个请求中作为数据流?

换句话说,我试图了解这段代码是否会对内存造成压力,甚至在文件很大的情况下还会导致大量的IO操作。

我期望的理想行为是第二​​种情况(直接流传输数据而不缓冲整个主体)。在这种情况下,每个流将仅使用大小为32KB的缓冲区(是复制的默认缓冲区吗?)。

0 个答案:

没有答案