2013-10-10 2 views
1

(http.Request 유형) 클라이언트가 요청을 보내면 본문이 닫힙니다. 왜 문을 닫을 필요가 있고, 왜 끈이 될 수 없으며, 반복해서 읽을 수 있습니까?컴퓨터 과학의 용어로 http.Request Body 란 무엇입니까?

+4

"스트림"을 찾으십시오. 퍼포먼스가 필요하거나 큰 데이터를 처리하고자하는 즉시 문자열로 연주 할 수 없습니다. –

+0

나는 당신의 anwser를 좋아한다. 나는 그것을 받아 들일 것이다. 링크를 달거나 정교하게 만들면 좋을 것입니다. –

답변

7

이것은 stream라고합니다. 메모리에서 전체 데이터 집합을 사용할 필요없이 데이터를 처리 할 수 ​​있기 때문에 유용합니다. 또한 더 빠르게 수행 할 수있는 연산 결과를 제공 할 수 있습니다. 전체 집합을 계산할 때까지 기다리지 않아도됩니다.

큰 데이터를 처리하거나 퍼포먼스에 대해 걱정할 때마다 스트림이 필요합니다.

오프셋을 전체적으로 반복 할 필요없이 전체 세트를 사용할 수있을 때도 데이터를 하나씩 처리 할 수있는 편리한 추상화입니다.

2

당신은 bytesio 패키지를 사용하여 문자열로 요청 스트림을 저장할 수 있습니다 :

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() 
    } 
} 
관련 문제