> 백엔드 개발 > Golang > Go 미들웨어는 오류 반환 핸들러를 어떻게 처리할 수 있나요?

Go 미들웨어는 오류 반환 핸들러를 어떻게 처리할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-11-29 01:43:11
원래의
607명이 탐색했습니다.

How Can Go Middleware Handle Error-Returning Handlers?

Go에서 오류 반환 핸들러가 있는 미들웨어 패턴

Go 미들웨어 패턴은 특정 작업을 집합적으로 수행하는 모듈식 HTTP 핸들러를 구성하는 편리한 방법을 제공합니다. 메인 핸들러 기능 실행 전, 실행 중, 실행 후의 작업. 그러나 이 패턴은 일반적으로 오류를 반환하는 핸들러를 지원하지 않습니다.

이 제한을 해결하려면 반환되는 오류를 HTTP 응답으로 변환하여 오류 반환 핸들러의 어댑터 역할을 하는 미들웨어를 구현할 수 있습니다. . 이 미들웨어는 체인의 마지막 미들웨어로 추가되어 구성된 핸들러의 최종 결과를 처리할 수 있습니다. 예는 다음과 같습니다.

type errorHandler func(http.ResponseWriter, *http.Request) error

func (f errorHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    err := f(w, r)
    if err != nil {
        // log.Println(err)
        fmt.Println(err)
        os.Exit(1)
    }
}
로그인 후 복사

이 미들웨어는 오류 반환 처리기를 래핑하고 생성되는 모든 오류가 적절하게 처리되도록 보장합니다. 이 미들웨어를 사용하려면 오류 반환 처리기에 대한 래퍼를 생성하세요.

func errorHandle(w http.ResponseWriter, r *http.Request) error {
    w.Write([]byte(`Hello World from errorHandle!`))
    return nil
}
로그인 후 복사

그런 다음 오류를 반환하지 않는 다른 미들웨어를 포함할 수 있는 미들웨어 체인과 결합하세요.

middlewareChain := moreMiddleware(myMiddleware)
http.Handle("/", middlewareChain(errorHandler(errorHandle)))
로그인 후 복사

이 접근 방식을 사용하면 오류 반환 핸들러를 다른 미들웨어와 원활하게 결합할 수 있으므로 모든 오류는 작업이 끝날 때 오류 핸들러 미들웨어에 의해 처리됩니다. 체인.

위 내용은 Go 미들웨어는 오류 반환 핸들러를 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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