How to make a middleware so that it only works for some handlers (not for all)? For example,
func (srv *server) Router(repository storage.Repository, cfg config.Flags) *gin.Engine {
h := handlers.NewHandlerProvider()
m := middlewares.NewMiddlewareProvider()
srv.httpServer.Use(gin.Recovery())
srv.httpServer.Use(m.LogHTTPHandler())
srv.httpServer.POST("/", FirstHandler)
srv.httpServer.GET("/qwe", SecondHandler)
return srv.httpServer
}
I just want m.LogHTTPHandler() to work only with FirstHandler, not both
Use gin.RouterGroup
to group all the routes that have common middlewares:
package main
import (
"fmt"
"github.com/gin-gonic/gin"
)
func main() {
// New returns a new blank Engine instance without any middleware attached.
router := gin.New()
g1 := router.Group("/")
{
// Add the logger middleware to group 1.
g1.Use(gin.Logger())
g1.GET("/", gin.HandlerFunc(func(ctx *gin.Context) {
fmt.Println("FirstHandler")
}))
}
g2 := router.Group("/qwe")
{
g2.GET("/", gin.HandlerFunc(func(ctx *gin.Context) {
fmt.Println("/SecondHandler")
}))
}
router.Run(":8080")
}