상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Go에서 HTTP 미들웨어를 만드는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Go에서 HTTP 미들웨어를 만드는 것은 웹 애플리케이션의 요청 및 응답 처리 과정에서 공통적인 기능을 추가하는 데 매우 유용합니다. 미들웨어는 요청을 처리하기 전에 또는 응답을 반환하기 전에 특정 작업을 수행할 수 있도록 해줍니다. 예를 들어, 인증, 로깅, CORS 처리, 요청 수정, 응답 수정 등을 미들웨어를 통해 구현할 수 있습니다. 미들웨어의 기본 구조 Go에서 미들웨어는 일반적으로 `http.Handler` 인터페이스를 구현하는 함수로 정의됩니다. `http.Handler` 인터페이스는 `ServeHTTP` 메서드를 가지고 있으며, 이 메서드는 HTTP 요청을 처리하는 데 사용됩니다. 미들웨어는 기존 <a href='https://sangseek.com/sangseeks/핸들러/ko'>핸들러</a>를 감싸는 형태로 구현됩니다. 미들웨어 구현 예제 아래는 간단한 로깅 미들웨어의 예제입니다. 이 미들웨어는 요청이 들어올 때마다 요청 메서드와 <a href='https://sangseek.com/sangseeks/URL/ko'>URL</a>을 로그로 출력합니다. ```go package main import ( "fmt" "net/http" "time" ) // LoggingMiddleware는 요청을 로깅하는 미들웨어입니다. func LoggingMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { start := time.Now() fmt.Printf("Request: %s %s\n", r.Method, r.URL.Path) // 다음 핸들러 호출 next.ServeHTTP(w, r) // 요청 처리 시간 로그 duration := time.Since(start) fmt.Printf("Processed in %v\n", duration) }) } // HelloHandler는 간단한 핸들러입니다. func HelloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, World!") } func main() { mux := http.New<a href='https://sangseek.com/sangseeks/ServeMux/ko'>ServeMux</a>() mux.Handle("/", HelloHandler) // 미들웨어 적용 loggedMux := LoggingMiddleware(mux) // 서버 시작 http.ListenAndServe(":8080", loggedMux) } ``` 미들웨어 <a href='https://sangseek.com/sangseeks/체이닝/ko'>체이닝</a> 여러 개의 미들웨어를 체이닝하여 사용할 수 있습니다. 이를 위해 각 미들웨어는 다음 미들웨어를 호출하는 방식으로 구현됩니다. 아래는 인증 미들웨어와 로깅 미들웨어를 함께 사용하는 예제입니다. ```go // AuthMiddleware는 인증을 처리하는 미들웨어입니다. func AuthMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // 인증 로직 (예: 토큰 확인) token := r.Header.Get("Authorization") if token != "valid-token" { http.Error(w, "Unauthorized", http.StatusUnauthorized) return } // 다음 핸들러 호출 next.ServeHTTP(w, r) }) } func main() { mux := http.NewServeMux() mux.Handle("/", HelloHandler) // 미들웨어 체이닝 loggedMux := LoggingMiddleware(AuthMiddleware(mux)) // 서버 시작 http.ListenAndServe(":8080", loggedMux) } ``` 미들웨어의 장점 1. 재사용성 : 미들웨어는 여러 핸들러에서 재사용할 수 있어 코드 중복을 줄일 수 있습니다. 2. 유지보수성 : 공통 기능을 미들웨어로 분리하면 코드의 유지보수가 용이해집니다. 3. 구성 가능성 : 미들웨어를 조합하여 다양한 기능을 쉽게 구성할 수 있습니다. 결론 Go에서 HTTP 미들웨어를 만드는 것은 요청 및 응답 처리 과정에서 공통적인 기능을 추가하는 강력한 방법입니다. 미들웨어를 통해 코드의 재사용성과 유지보수성을 높일 수 있으며, 다양한 기능을 조합하여 유연한 웹 애플리케이션을 구축할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기