gin实现中间件middleware


func main() {
    engine := gin.Default()
    engine.Use(RequestInfos())
    engine.GET("/query", func(context *gin.Context) {
        context.JSON(200,map[string] interface{}{
            "code": 1,
            "msg": context.FullPath(),
        })
    })
    engine.Run(":8888")

}
//打印请求的中间件;在调用http://localhost:8080/query之前调用下面方法
func RequestInfos() gin.HandlerFunc {
    return func(context *gin.Context) {
        path := context.FullPath()
        method := context.Request.Method
        fmt.Println("path-->"+path)
        fmt.Println("method--->"+method)

    }
}

 

如果有多个请求,如果想让单独的某个请求来使用RequestInfos

//直接放到第二个参数上
engine := gin.Default()
    //engine.Use(RequestInfos())
    engine.GET("/query", RequestInfos(),func(context *gin.Context) {

 

当query处理完后,处理结束后的信息也通过中间件打印出来. context.Next()

1、engine.Use(RequestInfos())
3、engine.GET("/query", func(context *gin.Context) {
        context.JSON(404,map[string] interface{}{
            "code": 1,
            "msg": context.FullPath(),
        })
    })
    engine.Run(":8888")

}
//打印请求的中间件;在调用query之前调用
func RequestInfos() gin.HandlerFunc {
    return func(context *gin.Context) {
--------2、fmt.Println("状态码:",context.Writer.Status())
        path := context.FullPath()
        method := context.Request.Method
        fmt.Println("path-->"+path)
        fmt.Println("method--->"+method)
        //*****************
          context.Next()
--------4、fmt.Println("状态码:",context.Writer.Status())
      
执行顺序:如上
打印结果:
    状态码: 200
    path-->/query
    method--->GET
    状态码: 404

正在整理笔记, 如有雷同,请告知,必添加!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM