美文网首页
gin框架的简单使用

gin框架的简单使用

作者: HueyYao | 来源:发表于2022-03-06 22:46 被阅读0次

    Golang Gin框架 涉及到的context和middleware的使用示例

    用到的库:
    go get -u go.uber.org/zap
    go get -u github.com/gin-gonic/gin

    地址:
    https://pkg.go.dev/go.uber.org/zap (zap:Package zap provides fast, structured, leveled logging.)
    https://github.com/gin-gonic/gin

    package main
    
    import (
        "github.com/gin-gonic/gin"
        "go.uber.org/zap"
        "math/rand"
        "time"
    )
    
    const keyReqId = "requestId"
    
    func main() {
        r := gin.Default()
        // _ 暂不处理err
        logger, _ := zap.NewProduction()
        // func (engine *Engine) Use(middleware ...HandlerFunc) IRoutes 
        // middleware的使用
        r.Use(func(c *gin.Context){
            s := time.Now()
            // 利用r.Use 写日志内容 包括: log latency, response code, path
            c.Next()
            logger.Info("incoming status", zap.String("path", c.Request.URL.Path),
                zap.Int("path", c.Writer.Status()),
                zap.Duration("elapsed:", time.Now().Sub(s)))
        },func(c *gin.Context){
            // context的使用:set一个reqId
            c.Set(keyReqId, rand.Int())
            c.Next()
        })
        // 插入一个requestId
        r.GET("/ping", func(c *gin.Context) {
            hs := gin.H{
                "message": "pong",
            }
            if rid, exist := c.Get(keyReqId); exist {
                hs[keyReqId] = rid
            }
            c.JSON(200, hs)
        })
        r.GET("/hello", func(c *gin.Context) {
            c.String(200, "hello")
        })
        r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
    }
    

    相关文章

      网友评论

          本文标题:gin框架的简单使用

          本文链接:https://www.haomeiwen.com/subject/cuqgrrtx.html