1 回答

TA貢獻2041條經驗 獲得超4個贊
ReadAll 從 r 讀取直到出現錯誤或 EOF 并返回它讀取的數據。
當您用來讀取常規端點的正文時,它會起作用,因為有效負載有一個EOF
:服務器使用標頭來Content-Length
告訴正文響應有多少字節,一旦客戶端讀取了那么多字節,它就會明白它已經讀取了全身上下都可以停下來。
但是,您的“流”端點沒有使用,因為正文的大小未知,它應該在事件到來時寫入事件,因此在這種情況下Content-Length
您不能使用。ReadAll
通常,在這種情況下,您應該逐行閱讀,其中每行代表一個事件。bufio.Scanner
正是這樣做的:
res, err := http.Get("http://localhost:8084/api/v1/events")
if err != nil {
panic(err.Error())
}
scanner := bufio.NewScanner(res.Body)
for e.scanner.Scan() {
if err := e.scanner.Err(); err != nil {
panic(err.Error())
}
event := e.scanner.Bytes()
var data Email
json.Unmarshal(event, &data)
fmt.Printf("Email: %v\n", data)
}
curl可以按預期處理響應,因為它會檢查端點是否會流式傳輸數據,因此它會相應地做出反應。添加對問題的響應可能會有所幫助curl。
- 1 回答
- 0 關注
- 102 瀏覽
添加回答
舉報