在 Gin 中,获取 URL 查询字符串参数可以使用 c.Query()
方法。该方法返回一个字符串表示查询字符串参数的值。
示例:
func main() {
r := gin.Default()
r.GET("/api", func(c *gin.Context) {
name := c.Query("name") // 获取 name 参数的值
age := c.Query("age") // 获取 age 参数的值
c.JSON(200, gin.H{
"name": name,
"age": age,
})
})
r.Run(":8080")
}
你还可以使用 c.DefaultQuery()
方法获取默认值,如果查询参数不存在则返回该默认值。
示例:
func main() {
r := gin.Default()
r.GET("/api", func(c *gin.Context) {
name := c.DefaultQuery("name", "Gin") // 获取 name 参数的值,如果不存在则返回默认值 "Gin"
age := c.DefaultQuery("age", "18") // 获取 age 参数的值,如果不存在则返回默认值 "18"
c.JSON(200, gin.H{
"name": name,
"age": age,
})
})
r.Run(":8080")
}
如果你只想绑定 URL 查询字符串参数到一个结构体中,可以使用 c.ShouldBindQuery()
方法。
示例:
type User struct {
Name string `form:"name"`
Age int `form:"age"`
}
func main() {
r := gin.Default()
r.GET("/api", func(c *gin.Context) {
var user User
if err := c.ShouldBindQuery(&user); err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
c.JSON(200, gin.H{
"name": user.Name,
"age": user.Age,
})
})
r.Run(":8080")
}
在上面的例子中,Gin 会将 URL 查询字符串参数绑定到 User
结构体中的对应字段。如果绑定失败,则返回错误。