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() }
完结
但行好事,莫问前程!
本文来自博客园,作者:yangphp,转载请注明原文链接:https://www.cnblogs.com/ypeih/p/17304374.html