我想知道 golang 中的 http 包是如何工作的。我可以看到http响应的正文是这样的:
type Response struct {
StatusCode int
Header Header
Body io.ReadCloser
}
Run Code Online (Sandbox Code Playgroud)
这Body是一个 ReadCloser。这是为什么?
主要问题是: http 包是否同时完整地读取 header 和 body 然后返回,Response或者它只读取Header部分,当我们读取时,Body我们实际上是从连接读取?我们是否有可能在完成整个正文之前遇到错误(例如因为连接断开)?或者当我们收到响应时,正文已完全接收并驻留在内存中?
正文是一个 ReadCloser。这是为什么?
因为您可以从中读取内容,并且完成后必须关闭它。
主要问题是:http包是否同时完整地读取header和body,然后返回Response[?]
不。
或者它只是读取标题部分,而当我们从正文中读取时,我们实际上是从连接中读取?
是的
我们是否有可能在完成整个正文之前遇到错误(例如因为连接断开)?
是的。
或者当我们收到响应时,正文已完全接收并驻留在内存中?
不。想想 4.5 TByte 的流。
| 归档时间: |
|
| 查看次数: |
973 次 |
| 最近记录: |