Query参数:在URL中通过?后面的参数传递,可以使用gin.Context的Query()方法获取参数值。 func main() { r := gin.Default() r.GET("/user", func(c *gin.Context) { name := c.Query("name") age := c.Query("age") c.JSON(http.StatusOK, gin.H{ "name": name, "age": age, }) }) r.Run(":8080") } Param参数:在URL中通过/:paramName的形式传递,可以使用gin.Context的Param()方法获取参数值。 func main() { r := gin.Default() r.GET("/user/:name/:age", func(c *gin.Context) { name := c.Param("name") age := c.Param("age") c.JSON(http.StatusOK, gin.H{ "name": name, "age": age, }) }) r.Run(":8080") } Form参数:在HTTP请求的Body中传递,可以使用gin.Context的PostForm()方法获取参数值。 func main() { r := gin.Default() r.POST("/user", func(c *gin.Context) { name := c.PostForm("name") age := c.PostForm("age") c.JSON(http.StatusOK, gin.H{ "name": name, "age": age, }) }) r.Run(":8080") } JSON参数:在HTTP请求的Body中传递JSON数据,可以使用gin.Context的BindJSON()方法将JSON数据绑定到指定的结构体上。 type User struct { Name string `json:"name"` Age int `json:"age"` } func main() { r := gin.Default() r.POST("/user", func(c *gin.Context) { var user User err := c.BindJSON(&user) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{ "name": user.Name, "age": user.Age, }) }) r.Run(":8080") }