随心的博客

好记性不如个烂笔头,随心记录!

返回顶部

gin框架中间件

前言:

中间件 middleware,也是一种处理器。主要用于在多个业务逻辑中间重用代码,例如认证校验,日志处理等。

中间件需要附加在路由上,使用 router.Use() 方法

 

正文:

gin.Default() 初始化路由对象时,会随之附加两个中间件 Logger Recovery

gin.New()  创建空白路由  没有任何中间件

 

全局中间件

全局中间件定义在路由之前,全局中间件之后的路由都会生效。

 

中间件实例:全局中间件

//中间件定义方法1
func loginMiddleware(c *gin.Context) {
    c.String(http.StatusOK, "this is login middleware 。。。\n")
}
//中间件定义方法2
func loginoutMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.String(http.StatusOK, "loginout middleware .... \n")
    }
}
func main() {
    router := gin.Default()
    //使用中间件
    //router.Use(loginMiddleware) //使用单个中间件
    router.Use(loginMiddleware, loginoutMiddleware()) //使用多个中间件

    router.GET("/", func(c *gin.Context) {
        c.String(200, "hello  this is index ")
    })

    router.Run()
}

 

局部中间件

局部中间件,定义在单个路由上,只针对部分路由起作用

 

中间件实例:局部中间件

 

可绑定多个中间件

router.GET("/user", loginMiddleware,loginoutMiddleware(), func(c *gin.Context) {

c.String(200, "hello  this is user ")

})

路由组绑定中间件

user := router.Group("user", loginMiddleware)

 

// 中间件定义方法1
func loginMiddleware(c *gin.Context) {
    c.String(http.StatusOK, "this is login middleware ...\n")
}

// 中间件定义方法2
func loginoutMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.String(http.StatusOK, "loginout middleware .... \n")
    }
}

func main() {
    router := gin.Default()
    router.GET("/", func(c *gin.Context) {
        c.String(200, "hello  this is index ")
    })
    //局部中间件1
    router.GET("/user", loginMiddleware,loginoutMiddleware(), func(c *gin.Context) {
        c.String(200, "hello  this is user ")
    })
    //局部中间件2
    router.GET("/goods", loginoutMiddleware(), func(c *gin.Context) {
        c.String(200, "hello  this is goods ")
    })
    //路由组使用中间件3
    user := router.Group("user", loginMiddleware)
    {
        user.GET("list", func(c *gin.Context) {
            c.String(http.StatusOK, "hello user list")
        })

        user.GET("add", func(c *gin.Context) {
            c.String(http.StatusOK, "hello user add")
        })
    }
    router.Run()
}

 

完结

 

posted @ 2023-04-10 21:25  yangphp  阅读(52)  评论(0编辑  收藏  举报