-
基本概念
gin.Engine是 Gin 框架的核心结构体,它就像是一个 HTTP 服务器的大脑,用于管理路由、中间件和整个 HTTP 服务的运行。它是构建 Web 应用程序的基础,所有的路由注册和中间件配置都是围绕这个结构体展开的。
-
创建和初始化
-
创建一个
gin.Engine实例非常简单,通常使用gin.Default()或gin.New()方法。 -
gin.Default():-
这是最常用的创建方式,它返回一个默认配置的
gin.Engine实例。这个实例包含了日志记录器(Logger)和恢复中间件(Recovery)。例如:
-
-
package main
import (
"github.com/gin - gonic/gin"
)
func main() {
engine := gin.Default()
// 在这里注册路由和中间件等操作
engine.Run(":8080")
}
-
在这个示例中,
engine是一个gin.Engine结构体的实例,它可以用来注册各种路由和中间件,最后通过Run方法启动 HTTP 服务器,监听在8080端口。 -
gin.New():-
这种方式创建一个没有任何中间件的空白
gin.Engine实例。如果只想使用自己选择的中间件,而不使用默认的日志记录和恢复中间件,就可以使用这种方式。例如:
-
package main
import (
"github.com/gin - gonic/gin"
)
func main() {
engine := gin.New()
// 添加自定义中间件
engine.Use(myMiddleware())
// 注册路由
engine.Run(":8080")
}
-
在这里,首先创建了一个空白的
gin.Engine实例,然后添加了自定义的中间件myMiddleware(),最后启动服务器。
-
路由注册功能
-
gin.Engine提供了多种方法来注册路由,用于处理不同类型的 HTTP 请求(如 GET、POST、PUT、DELETE 等)。 -
GET方法:-
用于注册处理 GET 请求的路由。例如:
-
-
engine.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "Hello, World!"})
})
-
这个例子中,当客户端发送一个 GET 请求到
/hello路径时,服务器会返回一个包含{"message": "Hello, World!"}的 JSON 响应。 -
POST方法等其他 HTTP 方法:-
类似地,
POST、PUT、DELETE等方法用于注册处理相应 HTTP 请求类型的路由。例如:
-
engine.POST("/user", func(c *gin.Context) {
// 处理用户注册逻辑
c.JSON(201, gin.H{"message": "User created"})
})
-
这里是一个处理 POST 请求的路由,用于用户注册功能,当注册成功后返回一个状态码为 201(Created)的响应。
-
中间件功能
-
gin.Engine可以用来添加中间件,中间件是在请求处理过程中执行的函数,它可以用于日志记录、权限验证、错误恢复等多种功能。 -
Use方法:-
用于添加中间件。例如,添加一个简单的日志记录中间件:
-
-
func LoggerMiddleware(c *gin.Context) {
// 记录请求开始时间
start := time.Now()
c.Next()
// 记录请求结束时间,并计算耗时
end := time.Now()
duration := end.Sub(start)
log.Printf("Request %s %s took %v", c.Request.Method, c.Request.URL.Path, duration)
}
engine.Use(LoggerMiddleware)
- 在这个例子中,
LoggerMiddleware函数是一个中间件,它记录了请求的开始时间,然后通过c.Next()让请求继续执行后续的处理逻辑,最后记录请求结束时间并计算耗时,将日志信息记录下来。这个中间件会应用到所有的路由上,当然也可以通过一些方式将中间件应用到特定的路由上。