📌  相关文章
📜  gin 中间件示例 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 14:41:24.822000             🧑  作者: Mango

Gin 中间件示例 - Go 编程语言

Gin 是一款轻量级的 Go Web 框架,它支持中间件。中间件是一种常见的设计模式,它负责在请求到达目标处理程序之前进行处理,可以用来实现各种功能,例如:

  • 认证和授权
  • 请求处理时间记录
  • 错误处理
  • 缓存
  • 日志记录

Gin 的中间件使用非常灵活,可以对应用的全局、路由组、单个路由进行设置。

以下是一个简单的 Gin 中间件示例,该示例在请求处理前输出一条日志,请求处理后输出一个 HTTP 响应头:

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"time"
)

func Logger() gin.HandlerFunc {
	return func(c *gin.Context) {
		t := time.Now()
		// 在请求处理前输出日志
		fmt.Printf("Started %s %s\n", c.Request.Method, c.Request.URL.Path)
		// 继续处理请求
		c.Next()
		// 在请求处理后输出响应头
		fmt.Printf("Completed %s %s in %v\n", c.Request.Method, c.Request.URL.Path, time.Since(t))
	}
}

func main() {
	// 创建一个默认的 Gin 引擎
	r := gin.Default()

	// 绑定中间件到路由组 /api
	api := r.Group("/api")
	api.Use(Logger())

	// GET 请求 /api/hello
	api.GET("/hello", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "Hello, World!",
		})
	})

	// 启动引擎
	r.Run(":8080")
}

以上代码定义一个名为 Logger 的中间件函数,该函数返回一个符合 Gin 框架要求的中间件函数。

main 函数中,先创建一个默认的 Gin 引擎 r,然后创建一个路由组 /api,并将中间件 Logger 绑定到该路由组。

接着,定义一个 GET 请求处理函数,在该函数中返回一个 JSON 响应。

最后,调用引擎的 Run 方法启动 HTTP 服务,监听端口 :8080

运行以上程序,访问 http://localhost:8080/api/hello,控制台输出如下:

Started GET /api/hello
Completed GET /api/hello in 5.364µs

以上输出显示,在请求处理前输出了一条日志(Started GET /api/hello),请求处理后输出了一个表示处理时间的信息(Completed GET /api/hello in 5.364µs)。

总结:通过使用 Gin 中间件,我们可以轻松地实现各种功能,提高应用的灵活性和可维护性。需注意,中间件的执行顺序影响应用的行为,应慎重设置。