• day4|gin的中间件和路由分组


    中间件其实是一个方法,

    在.use就可以调用中间件函数

    1. r := gin.Default()
    2. v1 := r.Group("v1")
    3. //v1 := r.Group("v1").Use()
    4. v1.GET("test", func(c *gin.Context) {
    5. fmt.Println("get into the test")
    6. c.JSON(200, gin.H{
    7. "success": true, //返回一对键值对
    8. })
    9. })
    10. r.Run(":8080")
    11. }

    之后我们再来看Use方法,用来使用中间件

    1. // Use adds middleware to the group, see example code in GitHub.
    2. func (group *RouterGroup) Use(middleware ...HandlerFunc) IRoutes {
    3. group.Handlers = append(group.Handlers, middleware...)
    4. return group.returnObj()
    5. }
    6. type HandlerFunc func(*Context)//HandlerFunc就是一个接受了参数为*Context的函数
    7. //在实际过程中是我们返回一个函数作为结果

    说一下中间件的顺序

    和洋葱中间件是差不多的

    image.png

    1. func middle() gin.HandlerFunc {
    2. return func(c *gin.Context) {
    3. fmt.Println("我在方法前,1")
    4. c.Next()
    5. fmt.Println("我在方法后,1")
    6. }
    7. }
    8. func middleTwo() gin.HandlerFunc {
    9. return func(c *gin.Context) {
    10. fmt.Println("我在方法前,2")
    11. c.Next()
    12. fmt.Println("我在方法后,2")
    13. }
    14. }
    15. func main() {
    16. r := gin.Default()
    17. v1 := r.Group("v1").Use(middle(), middleTwo())
    18. /*
    19. 首先执行middle()
    20. c.Next()
    21. 执行middleTwo()
    22. 在middleTwo内部也有c.Next()
    23. 这个时候发现没有了
    24. 往下面执行,这个就是core
    25. 执行完之后执行
    26. middleTwo()
    27. 然后再执行middle()
    28. */
    29. v1.GET("test", func(c *gin.Context) {
    30. fmt.Println("我在分组方法内部")
    31. c.JSON(200, gin.H{
    32. "success": true, //返回一对键值对
    33. })
    34. })
    35. r.Run(":8080")
    36. }

    中间件还有一种调用方式,链式调用方式

    v1 := r.Group("v1").Use(middle(),middleTwo())
    

    效果是一样的

  • 相关阅读:
    后台日志打印配置
    PostgreSQL问题记录:column “...“ does not exist
    个人记录jenkins编译ios过程 xcode是9.4.1
    循环神经网络RNN、RNNCell、GRUCell
    Android 小部件播放视频
    牛客网SQL中等难度
    用VS Code搞Qt6:编译附加模块
    【Web前端】CSS详解(中篇)
    Python学习----面向对象
    解决nuxt/koa架构初始项目运行报错问题
  • 原文地址:https://blog.csdn.net/m0_74107946/article/details/137266423