我想知道 golang 中的 http 包是如何作業的。我可以看到http回應的主體是這樣的:
type Response struct {
StatusCode int
Header Header
Body io.ReadCloser
}
這Body是一個 ReadCloser。這是為什么?
主要問題是:http包是否同時完整地讀取標題和正文然后回傳Response或者它只是讀取Header部分并且當我們讀取時Body我們實際上是從連接讀取?是否有可能在完成整個主體之前遇到錯誤(例如,因為連接斷開)?或者當我們得到回應時,身體被完全接收并駐留在記憶體中?
uj5u.com熱心網友回復:
Body 是一個 ReadCloser。這是為什么?
因為您可以從中讀取,并且一旦完成就必須關閉它。
主要問題是:http包是否同時完整讀取header和body,然后回傳Response [?]
不。
或者它只是讀取 Header 部分,當我們從 Body 讀取時,我們實際上是從連接中讀取?
是的
是否有可能在完成整個主體之前遇到錯誤(例如,因為連接斷開)?
是的。
或者當我們得到回應時,身體被完全接收并駐留在記憶體中?
不。想想一個 4.5 TByte 的流。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/438861.html
