gin中间件

1、想要使用中间件必须是一个 func(c *gin.Context)类型的函数,底层实现了handeFunc方法
2、中间件是请求和响应的分界点,无论怎么变换给前端响应的那个动作永远最后执行
2、Use()⽅法的作用是,将中间件函数存放到一个map里用于后续的执行,只会给c上下⽂添加⼀个属性,并赋值。后⾯的路由处理器,可以根据被中间件装饰后提取其值。
        1、执行的顺序是按照注册的顺序进行执行
        2、虽然名为全局中间件,只要注册中间件的过程之前设置的路由,将不会受注册的中间件所影响。只有注册了中间件后面的路由函数才会被中间件装饰。
        3、设置全局中间件
            r.User(m1,m2)
        4、局部中间件

            单个路由注册:
                r.GET("/index", m1, indexHandler, m1)
                r.GET("/home", m2, homeHandler)
            路由组中间件:只对组内的路由生效,组内也可以设置组内的全局中间件
                1、shopGroup := r.Group("/shop", m1, m2)
                    {
                        shopGroup.GET("/index", func(c *gin.Context) {
                            c.String(http.StatusOK, "/shop/index")
                        })
                    }

                2、shopGroup := r.Group("/shop")
                    shopGroup.Use(m1, m2)
                    {
                        shopGroup.GET("/index", func(c *gin.Context) {
                            c.String(http.StatusOK, "/shop/index")
                        })
                    }

                3、shopGroup := r.Group("/shop")
                    {
                        shopGroup.GET("/index", m1, m2, func(c *gin.Context) {
                            c.String(http.StatusOK, "/shop/index")
                        })
                    }

3、c.Next() 方法的作用是解决⼀个请求和⼀个响应经过我们的中间件,
    1、当遇到c.Next()函数时 它取出所有的没被执行过的注册的函数都执⾏⼀遍,然后再回到本函数中,有点类似递归函数
    2、可以用在token校验,把用户id存起来共给功能性函数使用


4、c.Abort()方法的作用 终止调用整个链条
请登录后发表评论

    没有回复内容