Gin-gonic是否支持GET请求?GET请求查询参数读取失败求助
解决Gin-gonic中获取GET查询参数的问题
嘿,我一眼就看出问题所在了——你搞混了Gin里路径参数和查询参数的获取方式!
你现在用的c.Param("name1")是用来提取URL路径里的参数的,比如你提到的http://localhost:3000/backend/value1这种格式,对应的路由得写成router.GET("/backend/:name1", ...)才能用Param拿到值。但你的请求是通过URL查询字符串传递参数的(就是?后面的name1=value1&...),这种情况得用c.Query()方法来获取。
修改后的Golang代码
package main import ( "net/http" "fmt" "github.com/gin-gonic/contrib/static" "github.com/gin-gonic/gin" ) func main(){ router := gin.Default() router.Use(static.Serve("/", static.LocalFile("./views", true))) router.GET("/backend", func(c *gin.Context){ // 用Query获取URL查询参数 name1 := c.Query("name1") name2 := c.Query("name2") name3 := c.Query("name3") fmt.Println("name1:", name1) fmt.Println("name2:", name2) fmt.Println("name3:", name3) c.JSON(http.StatusOK, gin.H{ "name1": name1, "name2": name2, "name3": name3, }) }) router.Run(":3000") }
额外实用小技巧
如果担心某些参数可能没被传递,想给个默认值兜底,可以用c.DefaultQuery("参数名", "默认值"),比如:
name1 := c.DefaultQuery("name1", "未输入名称")
这样如果请求里没带name1参数,就会返回"未输入名称"而不是空字符串,容错性更强。
现在再提交表单,你就能得到预期的{"name1":"value1","name2":"value2","name3":"value3"}结果啦!
内容的提问来源于stack exchange,提问作者cocobot
相关产品推荐
相关产品推荐

