在Golang中如何迭代查询参数?

huangapple go评论70阅读模式
英文:

How to iterate over query params in Golang

问题

我正在使用Golang中的Fiber包来处理HTTP请求,并希望找到请求中的所有查询参数。

GET http://example.com/shoes?order=desc&brand=nike&lang=english

我想要遍历查询参数,并找到类似以下的内容:

for k, v := range c.AllQueries() {
reqObj[k] = v[0]
}

期望的输出:

"order" : "desc"
"brand" : "nike"
"lang" : "english"

英文:

I am using Fiber package in Golang to handle the httprequests and want to find all the query params present in request

GET http://example.com/shoes?order=desc&brand=nike&lang=english

I want to iterate over query params and looking for something like this

for k, v := range c.AllQueries() {
	reqObj[k] = v[0]
}

Expected output:

"order" : "desc"
"brand" : "nike"
"lang" : "english"

答案1

得分: 2

这里是AllParams实现的链接:链接。我们可以看到这个方法返回一个map[string]string类型的查询参数。所以AllParams就是你需要的。

params := c.AllParams()
for k, v := range params {
    // 使用这些值做一些操作
}

编辑:
Go-fiber在底层使用了fasthttp。你可以查看这个方法块,并按照他们的方式迭代fasthttp.QueryArgs()

c.fasthttp.QueryArgs().VisitAll(func(key, val []byte) {
   // 在这里实现你想要对键值对做的操作
})
英文:

Here is the link of AllParams implementation. We can see this method returns a map[string]string of query params. So AllParams is what you need.

params := c.AllParams()
for k, v := range params {
    // do something with the values
}

Edit:
Go-fiber uses fasthttp under the hood. You can look into this method block and iterate the fasthttp.QueryArgs() the way they are doing.

c.fasthttp.QueryArgs().VisitAll(func(key, val []byte) {
   // implement what you want to do with the key values here
})

huangapple
  • 本文由 发表于 2022年9月15日 23:45:41
  • 转载请务必保留本文链接:https://go.coder-hub.com/73734025.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定