Gin 如何接受表单中的字典(Map)参数
如果查询字符串参数或 POST 表单参数是一个字典(Map),我们要怎么获取呢?
POST /post?ids[a]=1234&ids[b]=hello HTTP/1.1 Content-Type: application/x-www-form-urlencoded names[first]=thinkerou&names[second]=tianou
一般情况下我们都不会有这种需求,但是,但是 Gin 竟然提供了,真的很赞啊。
Gin 提供了 c.QueryMap()
用于获取字典形式的查询字符串参数,提供了 c.PostFormMap()
用于获取字典形式的 POST 表单参数。
这两个函数的用法和 c.Query()
以及 c.PostForm()
差不多,只不过返回的值是一个 map[string]string
类型
不过需要注意的是,如果参数不存在,返回的是一个空 Map。
示例代码如下
package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() router.POST("/post", func(c *gin.Context) { ids := c.QueryMap("ids") names := c.PostFormMap("names") fmt.Printf("ids: %v; names: %v", ids, names) }) router.Run(":8080") }
运行结果如下
ids: map[b:hello a:1234]; names: map[second:tianou first:thinkerou]