You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:25:32