미들웨어 체인을 사용하여 Go에서 HTTP 응답을 기록하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-10-28 08:55:29
원래의
127명이 탐색했습니다.

How to Log HTTP Responses in Go with Middleware Chaining?

http.HandleFunc에서 수신 HTTP 요청에 대한 응답 로깅

이전 스레드에서 제기된 질문에 대한 응답으로 이 기사에서는 별도의 방법을 사용하지 않고 라이브 서버에서 HTTP 응답을 로깅하는 방법을 제안합니다. 가짜 요청에. 목표는 철저한 분석을 위해 헤더와 JSON 페이로드를 모두 캡처하는 것입니다.

미들웨어 체인 개념을 활용하여 응답을 가로채고 관련 정보를 기록하는 사용자 정의 HTTP 핸들러를 만들 수 있습니다. 방법은 다음과 같습니다.

미들웨어 체이닝 접근 방식

미들웨어 체이닝을 사용하면 기본 처리기 기능 전후에 실행될 수 있는 미들웨어 기능을 정의합니다. 이러한 미들웨어는 로깅, 유효성 검사 또는 보안 검사와 같은 다양한 작업을 수행할 수 있습니다.

기능 핸들러 조합기 구현

마법의 negroni 솔루션 대신 자체 기능 핸들러 조합기를 정의할 수 있습니다. 각 결합자는 특정 작업을 처리하며 결합되어 실행 체인을 형성할 수 있습니다. 예를 들어, 응답 로깅을 위한 조합자를 생성할 수 있습니다:

<code class="go">func NewResponseLoggingHandler(next http.HandlerFunc) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        // Replace response writer with a recorder for subsequent handlers
        c := httptest.NewRecorder()
        next(c, r)

        // Copy response from recorder to actual response writer
        for k, v := range c.HeaderMap {
            w.Header()[k] = v
        }
        w.WriteHeader(c.Code)
        c.Body.WriteTo(w)
    }
}</code>
로그인 후 복사

미들웨어 체인 관리

특정 카테고리의 모든 핸들러에 로깅 미들웨어를 적용하려면 기본 핸들러를 생성할 수 있습니다.

<code class="go">func NewDefaultHandler(next http.HandlerFunc) http.HandlerFunc {
    return NewResponseLoggingHandler(NewOtherStuffHandler(next))
}</code>
로그인 후 복사

이 결합자는 NewDefaultHandler를 통해 생성된 모든 체인에 NewOtherStuffHandler에 정의된 다른 기본 기능과 함께 응답 로깅이 포함되도록 보장합니다.

이러한 기술을 활용하면 다음에서 HTTP 응답을 원활하게 기록할 수 있습니다. 디버깅 및 분석에 대한 귀중한 통찰력을 제공하는 라이브 웹 서비스입니다.

위 내용은 미들웨어 체인을 사용하여 Go에서 HTTP 응답을 기록하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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