미들웨어와 핸들러 간에 데이터를 공유하는 방법
핸들러는 HTTP 핸들러를 반환하고, 미들웨어는 HTTP 핸들러를 수락하고 해당 작업을 수행한 후 이를 호출합니다. 운영. 미들웨어에서 핸들러로 데이터를 전달하려면 컨텍스트 패키지를 활용할 수 있습니다.
import ( "context" "github.com/gorilla/mux" ) func Middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Middleware operations // Parse body/get token. token := parseToken(r) ctx := context.WithValue(r.Context(), "token", token) next.ServeHTTP(w, r.WithContext(ctx)) }) } func Handler() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { token := r.Context().Value("token") // Continue with handler logic }) }
이 접근 방식은 미들웨어와 핸들러 모두에서 JWT를 구문 분석하는 것을 방지하여 리소스의 효율적인 사용을 보장합니다. r.Context().Value()에서 Value 인수의 유형을 변경하여 모든 유형의 데이터를 전달할 수 있습니다.
위 내용은 Go에서 미들웨어와 핸들러 간에 데이터를 어떻게 공유할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!