Gin 如何获取 GET 查询字符串参数?

查询字符串参数 就是 URL 中 ? 后面 # 之前的部分,比如下面的 URL,查询字符串参数特指 a=b&c=d

https://www.twle.cn/t/90561?a=b&c=d#reply0

Gin 的 Handler 提供了 c.Query()c.DefaultQuery() 以及 c.GetQuery() 来获取查询参数字符串。 三者的区别如下

方法 说明
c.Query() 获取查询参数,如果参数不存在或值为空则返回空字符串 ""
c.DefaultQuery() 获取查询参数,如果参数不存在或值为空则返回第二个参数做为值
c.GetQuery() 类似于 c.Query(),但同时返回第二个 bool 参数用于判断该参数到底存不存在

比如对于这个请求网址 GET /path?id=1234&name=Manu&value=, 三者的获取规则如下

c.Query()

c.Query("id")     // 返回 "1234"
c.Query("name")   // 返回 "Manu"
c.Query("value")  // 返回 ""
c.Query("wtf")    // 返回 ""

c.DefaultQuery()

c.DefaultQuery("id", "none")        // 返回 "123"   
c.DefaultQuery("name", "unknown")   // 返回 "Manu"
c.DefaultQuery("value")             // 返回 ""
c.DefaultQuery("wtf", "none")       // 返回 "none" 注意和 c.Query() 的区别

c.GetQuery()

c.GetQuery("id")                  // 返回 ("123",true)  
c.GetQuery("name")              // 返回 ("Manu",true)
c.GetQuery("value")             // 返回 ("",true)
c.GetQuery("wtf")               // 返回 ("",false)  注意和 c.Query() 的区别

示例代码如下

package main

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

func main() {
    router := gin.Default()

    // 使用现有的基础请求对象解析查询字符串参数。
    // 示例 URL: /welcome?firstname=Jane&lastname=Doe
    router.GET("/welcome", func(c *gin.Context) {
        firstname := c.DefaultQuery("firstname", "Guest")
        lastname := c.Query("lastname") // shortcut for c.Request.URL.Query().Get("lastname")

        c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
    })
    router.Run(":8080")
}
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.