---
tags: golang, gin, middleware
---
# gin with middleware setup
## introduction
This is article of how to setup middleware in gin
## usage
Middleware is use do the logic that will spread between some router something like logger, format checker
## middleware function
```golang==
func Logger() gin.HandlerFunc {
return func(c *gin.Context) {
t := time.Now()
c.Set("middle", "Logger")
// before router
c.Next()
// after router
latency := time.Since(t)
log.Print(latency)
status := c.Writer.Status()
log.Println("Status:", status)
}
}
```
## gin setup the middle with gin router
```golang
func SetupRouter() *gin.Engine {
initRouter := gin.Default()
initRouter.Use(md.Logger())
// get router
initRouter.GET("/", func(context *gin.Context) {
// context.String(http.StatusOK, "hello gin")
middle := context.MustGet("middle").(string)
context.JSON(http.StatusOK, gin.H{
"message": "hello gin",
"middle": middle,
})
})
return initRouter
}
```
## this middleware function will be called for each route of this router