Gin框架入门
1. Gin简介
Gin是一个用Go编写的高性能Web框架,具有以下特点:
- 快速:基于httprouter,性能接近原生
- 简单:API设计简洁易用
- 中间件支持:灵活的中间件机制
- 错误处理:内置完善的错误管理
2. 安装与初始化
go get -u github.com/gin-gonic/gin
package main
import "github.com/gin-gonic/gin"
func main() {
// 创建Gin引擎实例
r := gin.Default()
// 定义路由
r.GET("/", func(c *gin.Context) {
c.String(200, "Hello, Gin!")
})
// 启动服务
r.Run(":8080")
}
3. 路由与参数
// 路径参数
r.GET("/user/:name", func(c *gin.Context) {
name := c.Param("name")
c.String(200, "Hello, %s", name)
})
// 查询参数
r.GET("/search", func(c *gin.Context) {
query := c.Query("q")
c.String(200, "Search: %s", query)
})
// POST请求与表单数据
r.POST("/login", func(c *gin.Context) {
username := c.PostForm("username")
password := c.PostForm("password")
c.JSON(200, gin.H{
"username": username,
"status": "logged in",
})
})
4. 返回响应
// 返回JSON
r.GET("/json", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "hello",
"status": 200,
})
})
// 返回HTML
r.GET("/html", func(c *gin.Context) {
c.HTML(200, "index.html", gin.H{
"title": "Main website",
})
})
// 返回文件
r.GET("/file", func(c *gin.Context) {
c.File("./public/image.png")
})
5. 简单RESTful API示例
// 模拟数据存储
var users = []gin.H{
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"},
}
func main() {
r := gin.Default()
// 获取所有用户
r.GET("/users", func(c *gin.Context) {
c.JSON(200, users)
})
// 获取单个用户
r.GET("/users/:id", func(c *gin.Context) {
id := c.Param("id")
// 这里简化处理,实际应从数据库查询
c.JSON(200, gin.H{"id": id, "name": "User " + id})
})
r.Run(":8080")
}
提示:Gin框架极大简化了Web开发,后续我们将学习更多高级功能如中间件、分组路由等。
