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

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

Mary-Kate Olsen
풀어 주다: 2024-11-28 09:45:12
원래의
679명이 탐색했습니다.

How Can Go Middleware Handle Errors Returned by Request Handlers?

Go 미들웨어 패턴과 오류 반환 요청 핸들러를 결합하는 방법

Go 미들웨어 패턴은 래핑 및 전처리를 위한 강력한 도구입니다. HTTP 요청. 그러나 기존 미들웨어 핸들러는 오류를 반환할 수 없으므로 오류 처리가 복잡해질 수 있습니다.

오류 반환 요청 핸들러

핸들러가 오류를 반환할 수 있도록 하려면 사용자 정의 핸들러 유형:

type errorHandler func(http.ResponseWriter, *http.Request) error
로그인 후 복사

이 유형을 사용하면 핸들러가 패닉이나 로깅을 사용하는 대신 오류를 생성할 수 있습니다.

오류 미들웨어

이러한 오류를 처리하려면 오류 반환 처리기 유형을 수용할 수 있는 특수 미들웨어가 필요합니다.

func errorHandler(h errorHandler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        err := h(w, r)
        if err != nil {
            // Handle error appropriately (e.g., log, send error response)
        }
    })
}
로그인 후 복사

이 미들웨어는 오류 반환 핸들러를 래핑하고 오류를 처리합니다. 생성합니다.

사용법

오류 반환 핸들러가 있는 미들웨어 체인을 사용하려면 최종 핸들러를 오류 미들웨어로 래핑하고 다른 미들웨어와 체인으로 연결하기만 하면 됩니다.

// Create a middleware chain.
moreMiddleware(myMiddleware(errorHandler(myHandlerReturningError)))
로그인 후 복사

라우터 통합

단순화를 위해 이 패턴을 지원하고 미들웨어 체인을 자동으로 구축하는 자체 라우터를 만드는 것을 고려해 보십시오.

라우터 예

https://github.com/fragmenta/mux/blob/master/mux.go
로그인 후 복사

이 예시 라우터는 미들웨어 체인을 구축하고 오류를 효율적으로 처리하는 방법을 보여줍니다. 오류 처리를 위해 사용자 정의 핸들러 유형을 사용할 때의 이점을 보여주고 미들웨어 사용을 단순화합니다.

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

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