全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-18 5 分钟 ✍️ juanwangdev

基础路由配置

路由是 Web 应用入口,Gin 提供简洁的路由配置方式。

HTTP 方法路由

Go
func main() {
    r := gin.Default()

    r.GET("/users", listUsers)       // 获取列表
    r.POST("/users", createUser)     // 创建资源
    r.PUT("/users/:id", updateUser)  // 更新资源
    r.DELETE("/users/:id", deleteUser) // 删除资源
    r.PATCH("/users/:id", patchUser) // 部分更新

    // 其他方法
    r.OPTIONS("/users", optionsHandler) // CORS 预检
    r.HEAD("/users", headHandler)       // 只返回头

    r.Run(":8080")
}

路由参数

Go
// 单个参数
r.GET("/user/:id", func(c *gin.Context) {
    id := c.Param("id")
    c.String(200, "用户ID: %s", id)
})

// 多个参数
r.GET("/user/:id/:name", func(c *gin.Context) {
    id := c.Param("id")
    name := c.Param("name")
    c.String(200, "ID=%s, Name=%s", id, name)
})

// 通配符参数
r.GET("/file/*path", func(c *gin.Context) {
    path := c.Param("path") // 包含前导斜杠
    c.String(200, "路径: %s", path)
})

路由组

Go
// 基础路由组
userGroup := r.Group("/users")
{
    userGroup.GET("", listUsers)
    userGroup.GET("/:id", getUser)
    userGroup.POST("", createUser)
    userGroup.PUT("/:id", updateUser)
    userGroup.DELETE("/:id", deleteUser)
}

// 嵌套路由组
api := r.Group("/api")
v1 := api.Group("/v1")
{
    v1.GET("/users", listUsers)
    v1.GET("/products", listProducts)
}

v2 := api.Group("/v2")
{
    v2.GET("/users", listUsersV2)
}

分离处理函数

Go
// 定义处理函数
func ListUsers(c *gin.Context) {
    c.JSON(200, gin.H{"message": "list users"})
}

func GetUser(c *gin.Context) {
    id := c.Param("id")
    c.JSON(200, gin.H{"id": id})
}

// 注册路由
r.GET("/users", ListUsers)
r.GET("/users/:id", GetUser)

多路由注册

Go
// 一个路径多方法
r.Any("/health", func(c *gin.Context) {
    c.String(200, "healthy")
})

// 单个处理函数处理多路由
handler := func(c *gin.Context) {
    c.String(200, "same handler")
}
r.GET("/a", handler)
r.POST("/a", handler)

处理函数签名

Go
// 标准处理函数
type HandlerFunc func(c *gin.Context)

// 获取请求信息
func handler(c *gin.Context) {
    method := c.Request.Method    // HTTP 方法
    path := c.Request.URL.Path    // 请求路径
    host := c.Request.Host        // 主机名

    c.JSON(200, gin.H{
        "method": method,
        "path":   path,
        "host":   host,
    })
}

路由组可以添加中间件,实现分组权限控制等功能。

要点总结

  • Gin 支持 GET/POST/PUT/DELETE/PATCH 等 HTTP 方法
  • :id 是参数匹配,*path 是通配符匹配
  • r.Group() 创建路由组,支持嵌套
  • 处理函数签名为 func(c *gin.Context)
  • r.Any() 注册所有 HTTP 方法

📝 发现内容有误?点击此处直接编辑

← 上一篇 RESTful风格API设计
下一篇 → 路由参数与通配符
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库