英文:
How to get all query parameters from go *gin.context object
问题
我正在查看 https://godoc.org/github.com/gin-gonic/gin
的文档,寻找一个返回传递的所有查询参数列表的方法。有一些方法可以返回查询参数的值,但是否有返回所有查询参数列表的方法呢?如果无法获取值也没关系。我正在使用以下代码获取查询参数的值。但是这段代码只能检查查询参数是否存在。
func myHandler(c *gin.Context) {
// 检查查询参数
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
}
}
}
英文:
I am looking at https://godoc.org/github.com/gin-gonic/gin
documentation for a method which returns list of all the query parameters passed. There are methods which return value of a query parameter. Is there any method which returns list of all the query parameters passed ? It's ok if we don't get values. I am fetching the values of the query parameter using the following code. But this code can only check if the query parameter exists or not.
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
}
}
}
答案1
得分: 71
你应该可以使用c.Request.URL.Query()
来获取一个Values,它是一个map[string][]string
类型的数据结构。
英文:
You should be able to do c.Request.URL.Query()
which will return a Values which is a map[string][]string
答案2
得分: 26
你可以使用以下方式获取查询参数:
c.Query("key") -> 返回字符串
或者
c.GetQuery("key") -> 返回 (字符串, bool -> ok)
英文:
you can get query parameters using :
c.Query("key") -> returns string
or
c.GetQuery("key") -> returns (string, bool->ok)
答案3
得分: 17
如果你在谈论 GET 查询参数,你可以使用以下方法获取它们:
c.Request.URL.Query()
你将得到一个 Values
类型,它是一个 map[string][]string
。
文档:https://golang.org/pkg/net/url/#URL.Query
英文:
If you're talking about GET query params, you can retrieve them using:
c.Request.URL.Query()
You'll get back a Values type which is a map[string][]string
答案4
得分: 0
继续@ctcherry的回答...
func myAPIEndpoint(c *gin.Context) {
paramPairs := c.Request.URL.Query()
for key, values := range paramPairs {
fmt.Printf("key = %v, value(s) = %v\n", key, values)
}
}
请记住,一个给定的键可能包含多个值,所以你的values
是一个数组。
英文:
Carrying on from @ctcherry's answer...
func myAPIEndpoint(c *gin.Context) {
paramPairs := c.Request.URL.Query()
for key, values := range paramPairs {
fmt.Printf("key = %v, value(s) = %v\n", key, values)
}
}
Keep in mind that a given key may contain multiple values, so your values
is an array.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论