미들웨어는 HTTP 요청의 라이프사이클에서 주요 처리 코드 전후에 코드가 실행되도록 하는 메커니즘입니다. 이는 프레임워크에서 모든 요청과 응답을 가로채는 후크로 이해할 수 있습니다.
iris에서 미들웨어 사용하기
iris에서는 Use
메소드를 통해 경로에 미들웨어를 등록할 수 있습니다.
패키지 main
// 패키지 임포트
import "github.com/kataras/iris/v12"
func main() {
// iris 인스턴스 정의
app := iris.New()
// gzip 압축 미들웨어 사용
app.Use(iris.Compression)
// 경로 설정
app.Get("/", func(ctx iris.Context) {
ctx.HTML("Hello <strong>%s</strong>!", "World")
})
// 포트로 리스닝
app.Listen(":8080")
}
iris에서 사용자 지정 미들웨어
// 사용자 지정 미들웨어 함수 시그니처
func Logger() iris.Handler {
// 클로저를 통해 핸들러 반환
return func(ctx iris.Context) {
t := time.Now()
// 매개변수 설정
ctx.Values().Set("framework", "iris")
// 요청 전 로직
ctx.Next()
// 요청 후 로직
latency := time.Since(t)
log.Print(latency)
// 전송된 상태 접근
status := ctx.GetStatusCode()
log.Println(status)
}
}
func main() {
app := iris.New()
// 사용자 지정 미들웨어 등록
app.Use(Logger())
app.Get("/test", func(ctx iris.Context) {
// 미들웨어에 의해 설정된 매개변수 읽기
framework := ctx.Values().GetString("framework")
// 출력: "iris"
log.Println(framework)
})
app.Listen(":8080")
}