Usando middleware
func main() {
// Se crea el router por defecto sin ningún middleware
r := gin.New()
// Middleware global
// El middlware Logger escribirá los logs hacia gin.DefaultWriter incluso si se configura GIN_MODE=release.
// Por defecto será gin.DefaultWriter = os.Stdout
r.Use(gin.Logger())
// El middleware Recovery recupera al servicio de cualquier panics y registra un error 500 si existiese uno.
r.Use(gin.Recovery())
// Middleware por ruta, se pueden añadir tantos como sea necesario.
r.GET("/benchmark", MyBenchLogger(), benchEndpoint)
// Grupo de Authorization
// authorized := r.Group("/", AuthRequired())
// exactamente el mismo que:
authorized := r.Group("/")
// Middleware por grupo. En este caso usamos el grupo creado
// y se aplicará AuthRequired() middleware únicamente en el grupo "authorized".
authorized.Use(AuthRequired())
{
authorized.POST("/login", loginEndpoint)
authorized.POST("/submit", submitEndpoint)
authorized.POST("/read", readEndpoint)
// Grupo anidado
testing := authorized.Group("testing")
testing.GET("/analytics", analyticsEndpoint)
}
r.Run(":8080")
}