1. 路径参数解析
路径参数是 URL 中的一部分,通常用于标识资源。例如:/user/:id
。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package main
import ( "github.com/gin-gonic/gin" )
func main() { r := gin.Default()
r.GET("/user/:id", func(c *gin.Context) { id := c.Param("id") c.JSON(200, gin.H{"user_id": id}) })
r.Run(":8080") }
|
注意事项
- 路径参数通过
c.Param(key)
获取。
- 参数名称需要与路由定义中的占位符一致。
2. 查询参数解析
查询参数是附加在 URL 后面的参数部分,例如:/search?query=golang&page=1
。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package main
import ( "github.com/gin-gonic/gin" )
func main() { r := gin.Default()
r.GET("/search", func(c *gin.Context) { query := c.Query("query") page := c.DefaultQuery("page", "1") c.JSON(200, gin.H{ "query": query, "page": page, }) })
r.Run(":8080") }
|
注意事项
- 查询参数通过
c.Query(key)
获取。
- 使用
c.DefaultQuery(key, defaultValue)
可以设置默认值。
3. 表单参数解析
表单参数通常通过 POST 请求的表单数据发送到服务器。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package main
import ( "github.com/gin-gonic/gin" )
func main() { r := gin.Default()
r.POST("/login", func(c *gin.Context) { username := c.PostForm("username") password := c.DefaultPostForm("password", "123456") c.JSON(200, gin.H{ "username": username, "password": password, }) })
r.Run(":8080") }
|
注意事项
- 表单参数通过
c.PostForm(key)
获取。
- 使用
c.DefaultPostForm(key, defaultValue)
设置默认值。
4. 混合参数解析
有时候需要同时处理路径参数、查询参数和表单参数。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| package main
import ( "github.com/gin-gonic/gin" )
func main() { r := gin.Default()
r.POST("/user/:id", func(c *gin.Context) { id := c.Param("id") action := c.Query("action") comment := c.PostForm("comment")
c.JSON(200, gin.H{ "user_id": id, "action": action, "comment": comment, }) })
r.Run(":8080") }
|
注意事项
- 可以混合使用
c.Param
、c.Query
和 c.PostForm
。
- 确保参数名不冲突,便于管理。
5. 总结
Gin 提供了多种方式来解析请求参数:
- 路径参数:用于资源标识,通常通过
c.Param
获取。
- 查询参数:适合用于筛选和分页,使用
c.Query
或 c.DefaultQuery
。
- 表单参数:用于提交数据,通过
c.PostForm
或 c.DefaultPostForm
获取。