本文主要是介绍gin框架38--使用中间件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
gin框架38--使用中间件
- 介绍
- 案例
- 说明
介绍
本文主要介绍如何在gin框架中使用中间件,并通过案例加以说明。使用MyBenchLogger中间件来输出特有的日志,用AuthRequire中间件来实现基础认证。
案例
package mainimport ("github.com/gin-gonic/gin""log""time"
)func MyBenchLogger() gin.HandlerFunc {return func(c *gin.Context) {t := time.Now()// 设置 example 变量c.Set("example", "12345")// 请求前c.Next()// 请求后latency := time.Since(t)log.Printf("latency=%v\n", latency)// 获取发送的 statusstatus := c.Writer.Status()log.Printf("status=%v\n", status)}
}func benchEndpoint(c *gin.Context) {c.String(200, "hello benchmark")
}
func loginEndpoint(c *gin.Context) {c.String(200, c.Request.URL.String())
}
func submitEndpoint(c *gin.Context) {c.String(200, c.Request.URL.String())
}
func readEndpoint(c *gin.Context) {c.String(200, c.Request.URL.String())
}
func analyticsEndpoint(c *gin.Context) {c.String(200, c.Request.URL.String())
}func AuthRequire() gin.HandlerFunc {return gin.BasicAuth(gin.Accounts{"foo": "bar", // user:foo password:bar"manu": "123", // user:manu password:123})
}func main() {// 新建一个没有任何默认中间件的路由r := gin.New()// 全局中间件// Logger 中间件将日志写入 gin.DefaultWriter,即使你将 GIN_MODE 设置为 release。// By default gin.DefaultWriter = os.Stdoutr.Use(gin.Logger())// Recovery 中间件会 recover 任何 panic。如果有 panic 的话,会写入 500。r.Use(gin.Recovery())// 你可以为每个路由添加任意数量的中间件。r.GET("/benchmark", MyBenchLogger(), benchEndpoint)// 认证路由组// authorized := r.Group("/", AuthRequired())// 和使用以下两行代码的效果完全一样:authorized := r.Group("/")// 路由组中间件! 在此例中,我们在 "authorized" 路由组中使用自定义创建的// AuthRequired() 中间件authorized.Use(AuthRequire()){authorized.POST("/login", loginEndpoint)authorized.POST("/submit", submitEndpoint)authorized.GET("/read", readEndpoint)// 嵌套路由组testing := authorized.Group("testing")testing.GET("/analytics", analyticsEndpoint)}// 监听并在 0.0.0.0:8080 上启动服务r.Run(":8080")
}
测试:
http://127.0.0.1:8080/benchmark
输出如下终端日志:
2022/04/04 11:05:12 latency=46.103µs
2022/04/04 11:05:12 status=200
[GIN] 2022/04/04 - 11:05:12 | 200 | 116.724µs | 127.0.0.1 | GET "/benchmark"
http://127.0.0.1:8080/read
说明
gin官方文档 使用中间件
这篇关于gin框架38--使用中间件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!