新聞中心
復雜參數(shù)
?ghttp.Request?對象支持智能的參數(shù)類型解析(不區(qū)分請求提交方式及請求提交類型),以下為提交參數(shù)示例以及服務端對應解析的變量類型:

| Parameter | Variable |
|---|---|
k=m&k=n |
map[k:n] |
k1=m&k2=n |
map[k1:m k2:n] |
k[]=m&k[]=n |
map[k:[m n]] |
k[a][]=m&k[a][]=n |
map[k:map[a:[m n]]] |
k[a]=m&k[b]=n |
map[k:map[a:m b:n]] |
k[a][a]=m&k[a][b]=n |
map[k:map[a:map[a:m b:n]]] |
k=m&k[a]=n |
error |
同名參數(shù)
同名參數(shù)提交格式形如:?k=v1&k=v2? ,后續(xù)的變量值將會覆蓋前面的變量值。
package main
import (
"github.com/GOgf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
func main() {
s := g.Server()
s.BindHandler("/", func(r *ghttp.Request) {
r.Response.Write(r.Get("name"))
})
s.SetPort(8199)
s.Run()
}
執(zhí)行后,我們訪問 http://127.0.0.1:8199/?name=john&name=smith 后,將會得到返回值 ?smith ?。
需要注意的是,在標準庫?net/http?處理中,提交的同名參數(shù)將會被轉換為字符串數(shù)組。
數(shù)組參數(shù)
數(shù)組參數(shù)提交格式形如:?k[]=v1&k[]=v2? 。
package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
func main() {
s := g.Server()
s.BindHandler("/", func(r *ghttp.Request) {
r.Response.Write(r.Get("array"))
})
s.SetPort(8199)
s.Run()
}
執(zhí)行后,我們訪問 http://127.0.0.1:8199/?array[]=john&array[]=smith 后,將會得到返回值 ?["john","smith"]? 。
Map參數(shù)
?Map?參數(shù)提交格式形如:?k[a]=m&k[b]=n?,并且支持多級?Map?,例如:?k[a][a]=m&k[a][b]=n?。
package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
func main() {
s := g.Server()
s.BindHandler("/", func(r *ghttp.Request) {
r.Response.Write(r.Get("map"))
})
s.SetPort(8199)
s.Run()
}
執(zhí)行后,我們訪問 http://127.0.0.1:8199/?map[id]=1&map[name]=john 后,將會得到返回值 ?{"id":"1","name":"john"} ?。
我們再試試多級?Map?,手動訪問以下地址
http://127.0.0.1:8199/?map[user1][id]=1&map[user1][name]=john&map[user2][id]=2&map[user2][name]=smith
將會得到返回值 ?{"user1":{"id":"1","name":"john"},"user2":{"id":"2","name":"smith"}} ?。
分享題目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame請求輸入-復雜參數(shù)
轉載源于:http://fisionsoft.com.cn/article/dhdeeoe.html


咨詢
建站咨詢
