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()方法的作用 终止调用整个链条

猜你喜欢

转载自blog.csdn.net/m0_38004619/article/details/106898863