> 백엔드 개발 > Golang > Go에서 파이프라인 HTTP 요청과 텍스트 파일의 응답을 어떻게 구문 분석하나요?

Go에서 파이프라인 HTTP 요청과 텍스트 파일의 응답을 어떻게 구문 분석하나요?

Mary-Kate Olsen
풀어 주다: 2024-12-23 01:40:54
원래의
465명이 탐색했습니다.

How to Parse Pipelined HTTP Requests and Responses from a Text File in Go?

Go에서 텍스트 파일의 HTTP 요청 및 응답 구문 분석

일반적인 시나리오에서는 텍스트 파일에 저장된 HTTP 요청 및 응답 파이프라인을 접하게 됩니다. 분석이나 추가 처리를 위해 이러한 파이프라인 메시지를 구조화된 형식으로 구문 분석해야 할 때 문제가 발생합니다. 이 글은 Go에서 HTTP 요청과 이러한 텍스트 파일의 응답을 모두 구문 분석하는 단계를 안내합니다.

요청 구문 분석

Go 표준 라이브러리는 http.ReadRequest라는 편리한 기능을 제공합니다. 이는 HTTP 요청 구문 분석을 단순화합니다. *bufio.Reader에서 요청 라인, 헤더 및 본문(Content-Length 헤더로 지정된 경우)을 읽습니다.

req, err := http.ReadRequest(buf)
if err != nil {
    return err
}
로그인 후 복사

응답 구문 분석

http.ReadResponse 함수는 다음을 수행합니다. HTTP 응답에 대한 유사한 작업입니다. *bufio.Reader에서 상태 줄, 헤더 및 본문을 읽습니다.

resp, err := http.ReadResponse(buf, req)
if err != nil {
    return err
}
로그인 후 복사

응답 본문 보존

http.ReadResponse 함수는 응답 본문을 반환할 때 자동으로 닫습니다. 나중에 사용하기 위해 본문을 보존하려면 수동으로 다른 버퍼에 복사해야 합니다.

b := new(bytes.Buffer)
io.Copy(b, resp.Body)
resp.Body.Close()
resp.Body = ioutil.NopCloser(b)
로그인 후 복사

파일 구문 분석

파일에서 HTTP 파이프라인을 구문 분석하려면 bufio 패키지를 사용합니다. 파일을 한 줄씩 읽고 구문 분석된 요청과 응답을 저장할 연결 구조체 조각을 만듭니다.

stream := make([]Connection, 0)
for {
    req, err := http.ReadRequest(buf)
    if err == io.EOF {
        break
    }
    resp, err := http.ReadResponse(buf, req)
    if err != nil {
        return err
    }
    ...
    stream = append(stream, Connection{Request: req, Response: resp})
}
로그인 후 복사

덤핑 검사

확인 목적으로 httputil.DumpRequest 및 httputil.DumpResponse를 사용하여 구문 분석된 요청과 응답을 문자열로 덤프하여 검사할 수 있습니다.

b, err := httputil.DumpRequest(c.Request, true)
if err != nil {
    log.Fatal(err)
}
fmt.Println(string(b))
b, err = httputil.DumpResponse(c.Response, true)
if err != nil {
    log.Fatal(err)
}
fmt.Println(string(b))
로그인 후 복사

결론

By 신중한 본문 처리와 함께 http.ReadRequest 및 http.ReadResponse 함수를 활용하여 Go에서 HTTP 파이프라인 요청과 텍스트 파일의 응답을 효과적으로 구문 분석할 수 있습니다. 이러한 접근 방식을 통해 우리는 편리하고 안정적인 방식으로 HTTP 통신 시나리오를 분석, 처리 또는 테스트할 수 있습니다.

위 내용은 Go에서 파이프라인 HTTP 요청과 텍스트 파일의 응답을 어떻게 구문 분석하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿