미들웨어를 사용하기

func main() {
	// 기본 미들웨어를 포함하지 않는 라우터를 작성합니다.
	r := gin.New()

	// Global middleware
	// GIN_MODE=release로 하더라도 Logger 미들웨어는 gin.DefaultWriter에 로그를 기록합니다.
	// 기본값 gin.DefaultWriter = os.Stdout
	r.Use(gin.Logger())

	// Recovery 미들웨어는 panic이 발생하면 500 에러를 씁니다.
	r.Use(gin.Recovery())

	// 각 라우트 당 원하는만큼 미들웨어를 추가 할 수 있습니다.
	r.GET("/benchmark", MyBenchLogger(), benchEndpoint)

	// 권한 그룹
	// authorized := r.Group("/", AuthRequired())
	// 다음과 동일합니다:
	authorized := r.Group("/")
	// 그룹별로 미들웨어를 사용할 수 있습니다!
	// 이 경우 "authorized"그룹에서만 사용자 정의 생성된 AuthRequired() 미들웨어를 사용합니다.
	authorized.Use(AuthRequired())
	{
		authorized.POST("/login", loginEndpoint)
		authorized.POST("/submit", submitEndpoint)
		authorized.POST("/read", readEndpoint)

		// 중첩 그룹
		testing := authorized.Group("testing")
		testing.GET("/analytics", analyticsEndpoint)
	}

	// 서버가 실행 되고 0.0.0.0:8080 에서 요청을 기다립니다.
	r.Run(":8080")
}