Go Web 编程实战Go Web 编程实战
首页
课程导读
首页
课程导读
  • 课程导读
  • 课程目录

    • Go基础语法精要
    • Web基础与HTTP处理
    • Gin框架入门
    • 路由与中间件
    • 数据库操作
    • 模板渲染
    • 错误处理与日志
    • 测试与部署
    • 高级中间件模式
    • 微服务架构
    • 性能优化
    • 安全最佳实践
    • 项目结构与代码组织

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开发,后续我们将学习更多高级功能如中间件、分组路由等。

Prev
Web基础与HTTP处理
Next
路由与中间件