gin框架获取参数

获取querystring参数

querystring指的是URL?后面携带的参数,例如:/user/search?username=小王子&address=沙河。 获取请求的querystring参数的方法如下:

func main() {
        //Default返回一个默认的路由引擎
        r := gin.Default()
        r.GET("/user/search", func(c *gin.Context) {
                username := c.DefaultQuery("username", "小王子")
                //username := c.Query("username")
                address := c.Query("address")
                //输出json结果给调用方
                c.JSON(http.StatusOK, gin.H{
                        "message":  "ok",
                        "username": username,
                        "address":  address,
                })
        })
        r.Run()
}

  


 

获取form参数

当前端请求的数据通过form表单提交时,例如向/user/search发送一个POST请求,获取请求数据的方式如下:

func main() {
        //Default返回一个默认的路由引擎
        r := gin.Default()
        r.POST("/user/search", func(c *gin.Context) {
                // DefaultPostForm取不到值时会返回指定的默认值
                //username := c.DefaultPostForm("username", "小王子")
                username := c.PostForm("username")
                address := c.PostForm("address")
                //输出json结果给调用方
                c.JSON(http.StatusOK, gin.H{
                        "message":  "ok",
                        "username": username,
                        "address":  address,
                })
        })
        r.Run(":8080")
}

  


 

获取json参数

当前端请求的数据通过JSON提交时,例如向/json发送一个POST请求,则获取请求参数的方式如下:

r.POST("/json", func(c *gin.Context) {
        // 注意:下面为了举例子方便,暂时忽略了错误处理
        b, _ := c.GetRawData()  // 从c.Request.Body读取请求数据
        // 定义map或结构体
        var m map[string]interface{}
        // 反序列化
        _ = json.Unmarshal(b, &m)

c.JSON(http.StatusOK, m)
})

  


 

更便利的获取请求参数的方式,参见下面的 参数绑定 小节。

获取path参数

请求的参数通过URL路径传递,例如:/user/search/小王子/沙河。 获取请求URL路径中的参数的方式如下。

func main() {
        //Default返回一个默认的路由引擎
        r := gin.Default()
        r.GET("/user/search/:username/:address", func(c *gin.Context) {
                username := c.Param("username")
                address := c.Param("address")
                //输出json结果给调用方
                c.JSON(http.StatusOK, gin.H{
                        "message":  "ok",
                        "username": username,
                        "address":  address,
                })
        })

r.Run(":8080")
}

  

 

摘自 <https://www.liwenzhou.com/posts/Go/Gin_framework/>

 

 
posted @ 2021-04-21 10:01  秋月桐  阅读(1828)  评论(0编辑  收藏  举报