当客户端发送请求时,Body将关闭。为什么它需要关闭,为什么它不能是字符串,你可以反复阅读?
答案 0 :(得分:7)
这称为stream。它很有用,因为它可以让您处理数据,而无需在内存中提供整套数据。它还允许您更快地给出可能执行的操作的结果:您不等待计算整个集合。
只要你想处理大数据或担心性能,就需要流。
它也是一种方便的抽象,即使整个集合可用,您也可以逐个处理数据,而无需处理偏移量来迭代整体。
答案 1 :(得分:2)
您可以使用bytes
和io
包将请求流存储为字符串:
func handler(w http.ResponseWriter, r *http.Request) {
var bodyAsString string
b := new(bytes.Buffer)
_, err := io.Copy(b, r)
if err == io.EOF {
bodyAsString = b.String()
}
}