go语言gin框架中间件
在Gin框架中,中间件是一种封装的、可重用的方法,用于处理HTTP请求。中间件的主要目的是提供一种方法,用于在HTTP请求到达主处理逻辑之前和之后进行一些操作。
以下是一些Gin框架中间件的示例:
- 日志中间件:
func Logger() gin.HandlerFunc {
return func(c *gin.Context) {
// 开始时间
startTime := time.Now()
// 处理请求
c.Next()
// 结束时间
endTime := time.Now()
// 日志格式
log.Printf("[%s] %s %s %v\n", c.Request.Method, c.Request.RequestURI, c.Writer.Status(), endTime.Sub(startTime))
}
}
- 错误处理中间件:
func ErrorHandler() gin.HandlerFunc {
return func(c *gin.Context) {
// 处理请求
c.Next()
// 如果发生错误,处理错误
errors := c.Errors
if len(errors) > 0 {
// 格式化错误信息
c.JSON(http.StatusInternalServerError, errors)
}
}
}
- 请求限制中间件:
func RateLimiter() gin.HandlerFunc {
// 这里可以使用第三方库如"golang.org/x/time/rate"实现限流器
limiter := rate.NewLimiter(10, 100)
return func(c *gin.Context) {
// 请求令牌桶限流
if !limiter.Allow() {
c.AbortWithStatusJSON(http.StatusTooManyRequests, "too many requests")
return
}
c.Next()
}
}
在Gin框架中使用中间件:
func main() {
r := gin.New()
// 使用日志中间件
r.Use(Logger())
// 使用错误处理中间件
r.Use(ErrorHandler())
// 路由
r.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "Hello World")
})
// 启动服务器
r.Run()
}
以上代码演示了如何创建和使用Gin框架的中间件。中间件可以用于日志记录、身份验证、请求限流等多种场景。
评论已关闭