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 중국어 웹사이트의 기타 관련 기사를 참조하세요!