zoukankan      html  css  js  c++  java
  • 5gin中间件

    一 全局中间件

    所有请求都经过此中间件

    package main
    
    import (
       "fmt"
       "time"
    
       "github.com/gin-gonic/gin"
    )
    
    // 定义中间
    func MiddleWare() gin.HandlerFunc {
       return func(c *gin.Context) {
          t := time.Now()
          fmt.Println("中间件开始执行了")
          // 设置变量到Context的key中,可以通过Get()取
          c.Set("request", "中间件")
          status := c.Writer.Status()
          fmt.Println("中间件执行完毕", status)
          t2 := time.Since(t)
          fmt.Println("time:", t2)
       }
    }
    
    func main() {
       // 1.创建路由
       r := gin.Default()
       // 注册中间件
       r.Use(MiddleWare())
       // {}为了代码规范
       {
          r.GET("/ce", func(c *gin.Context) {
             // 取值
             req, _ := c.Get("request")
             fmt.Println("request:", req)
             // 页面接收
             c.JSON(200, gin.H{"request": req})
          })
    
       }
       r.Run()
    }
    

    二 Next()方法

    package main
    
    import (
       "fmt"
       "github.com/gin-gonic/gin"
       "time"
    )
    
    // 定义中间
    func MiddleWare() gin.HandlerFunc {
       return func(c *gin.Context) {
          t := time.Now()
          fmt.Println("中间件开始执行了")
          // 设置变量到Context的key中,可以通过Get()取
          c.Set("request", "中间件")
          // 执行函数
          c.Next()
          // 中间件执行完后续的一些事情
          status := c.Writer.Status()
          fmt.Println("中间件执行完毕", status)
          t2 := time.Since(t)
          fmt.Println("time:", t2)
       }
    }
    
    func main() {
       // 1.创建路由
       r := gin.Default()
       // 注册中间件
       r.Use(MiddleWare())
       // {}为了代码规范
       {
          r.GET("/ce", func(c *gin.Context) {
             // 取值
             req, _ := c.Get("request")
             fmt.Println("request:", req)
             // 页面接收
             c.JSON(200, gin.H{"request": req})
          })
    
       }
       r.Run()
    }
    

    三 局部中间件

    package main
    
    import (
       "fmt"
       "time"
    
       "github.com/gin-gonic/gin"
    )
    
    // 定义中间
    func MiddleWare() gin.HandlerFunc {
       return func(c *gin.Context) {
          t := time.Now()
          fmt.Println("中间件开始执行了")
          // 设置变量到Context的key中,可以通过Get()取
          c.Set("request", "中间件")
          // 执行函数
          c.Next()
          // 中间件执行完后续的一些事情
          status := c.Writer.Status()
          fmt.Println("中间件执行完毕", status)
          t2 := time.Since(t)
          fmt.Println("time:", t2)
       }
    }
    
    func main() {
       r := gin.Default()
       //局部中间键使用
       r.GET("/ce", MiddleWare(), func(c *gin.Context) {
          // 取值
          req, _ := c.Get("request")
          fmt.Println("request:", req)
          // 页面接收
          c.JSON(200, gin.H{"request": req})
       })
       r.Run()
    }
    

    四 中间件练习

    定义程序计时中间件,然后定义2个路由,执行函数后应该打印统计的执行时间,如下:

    package main
    
    import (
       "fmt"
       "github.com/gin-gonic/gin"
       "time"
    )
    
    // 定义中间
    func myTime(c *gin.Context) {
       start := time.Now()
       c.Next()
       // 统计时间
       since := time.Since(start)
       fmt.Println("程序用时:", since)
    }
    
    func main() {
       // 1.创建路由
       r := gin.Default()
       // 注册中间件
       r.Use(myTime)
       // {}为了代码规范
       shoppingGroup := r.Group("/shopping")
       {
          shoppingGroup.GET("/index", shopIndexHandler)
          shoppingGroup.GET("/home", shopHomeHandler)
       }
       r.Run(":8080")
    }
    
    func shopIndexHandler(c *gin.Context) {
       time.Sleep(5 * time.Second)
       c.String(200,"ok")
    }
    
    func shopHomeHandler(c *gin.Context) {
       time.Sleep(3 * time.Second)
       c.String(200,"ok")
    }
    
  • 相关阅读:
    【原创】Jquery.Greybox.js(Jquery框架下的Greybox源代码)
    【超级原创】截至2009年10月20日双色球中奖号码前500期统计
    ASP.NET C#动态生成html页面
    【原创】JS判断浏览器类型
    【原创】用SQL语句删除重复记录的方法总结
    【原创】 ASP.NET C#反射简单实例应用
    【原创】UpdatePanel 中文乱码的终极解决方案(非常完美)
    【原创】ASP.NET C# 盗取中国银行汇率表
    【原创】ASP.NET 小偷模块(功能罕见)
    ASP.NET C# 货币转换函数 中文大写金额 英文金额
  • 原文地址:https://www.cnblogs.com/Henry121/p/15627426.html
Copyright © 2011-2022 走看看