如何从go*gin.context对象获取所有查询参数

aaj*_*aaj 7 go go-gin

我正在查看https://godoc.org/github.com/gin-gonic/gin一个方法的文档,该方法返回传递的所有查询参数的列表.有一些方法可以返回查询参数的值.是否有任何方法返回传递的所有查询参数的列表?如果我们没有获得价值,那就没关系.我使用以下代码获取查询参数的值.但是此代码只能检查查询参数是否存在.

func myHandler(c *gin.Context) {

    // check for query params
    if queryParam, ok := c.GetQuery("startingIndex"); ok {
        if queryParam == "" {
            c.Header("Content-Type", "application/json")
            c.JSON(http.StatusNotFound,
                gin.H{"Error: ": "Invalid startingIndex on search filter!"})
            c.Abort()
            return
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 29

您可以使用以下方式获取查询参数:

c.Query("key") -> returns string
or
c.GetQuery("key") -> returns (string, bool->ok)
Run Code Online (Sandbox Code Playgroud)


ctc*_*rry 15

你应该能够做到c.Request.URL.Query()这将返回一个这是一个map[string][]string

  • 在查询字符串中,一个参数名称可以多次使用,使用 []string 作为映射的值允许它们捕获共享相同参数名称的所有不同值。https://play.golang.org/p/FtQIz_ePF_N (6认同)
  • 为什么选择 map[string][]string 而不是 map[string]string? (2认同)

小智 6

如果您正在谈论GET查询参数,则可以使用以下方法检索它们:

c.Request.URL.Query()
Run Code Online (Sandbox Code Playgroud)

您将返回一个Values类型,它是 map[string][]string

文件:https//golang.org/pkg/net/url/#URL.Query