이전 토론에서는 단위 테스트에 적합한 기술인 가짜 요청을 사용하여 HTTP 응답을 검사하는 방법을 살펴보았습니다. 그러나 우리는 라이브 서버에 실시간 응답 데이터를 기록하는 방법도 모색하고 있습니다.
일반적인 접근 방식은 미들웨어 체인을 생성하는 것입니다. Negroni와 같은 라이브러리는 핸들러가 순차적으로 결합되고 실행되는 미들웨어 기능을 제공합니다. 핸들러 결합자를 사용하여 최소한의 미들웨어 구현을 달성할 수 있습니다.
<code class="go">func NewFooHandler(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // Do pre-handling tasks next(w, r) // Do post-handling tasks } }</code>
이러한 결합자를 연결하여 핸들러를 형성할 수 있습니다.
<code class="go">h := NewFooHandler(NewBarHandler(NewBazHandler(Sink)))</code>
이 기술을 문제에 적용하려면 핸들러 결합자를 생성할 수 있습니다.
<code class="go">func NewResponseLoggingHandler(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // Record the response c := httptest.NewRecorder() next(c, r) // Copy responses 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>
이 기본 핸들러를 사용하면:
<code class="go">h := NewDefaultHandler(...)</code>
모든 후속 핸들러에는 자동으로 응답 로깅이 포함됩니다.
위 내용은 `http.HandleFunc` 및 미들웨어를 사용하여 실시간 HTTP 응답을 기록하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!