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"
*/