gin中如何自定义中间件
package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { // 新建一个没有任何默认中间件的路由 router := gin.New() // Logger 中间件将日志写入 gin.DefaultWriter,即使你讲GIN.MODE设置为release // gin.DefaultWriter io.Writer = os.Stdout router.Use(gin.Logger()) // Recovery 中间件会 recover 任何 panic,如果有panic的话,会写入500 router.Use(gin.Recovery()) // 使用自定义的中间件 router.Use(RequestInfos()) router.Use(RequestInfos2()) router.Use(func(context *gin.Context) { url := context.Request.URL fmt.Println(url) }) router.GET("/json", func(context *gin.Context) { context.JSON(200, "OK") }) router.Run() } func RequestInfos() gin.HandlerFunc { return func(context *gin.Context) { path := context.FullPath() method := context.Request.Method fmt.Printf("path: %s, method: %s\n", path, method) context.Next() fmt.Println(context.Writer.Status()) } } func RequestInfos2() gin.HandlerFunc { return func(context *gin.Context) { fmt.Println("requestInfo2执行了") } } /* 显示RequestInfos中的第一个print打印,然后RequestInfos2的print打印 然后再回到RequestInfos中的context.Next()下面继续执行,最后输出日志信息 path: /json, method: GET requestInfo2执行了 /json 200 [GIN] 2021/10/22 - 14:32:19 | 200 | 0s | ::1 | GET "/json" */