请求输入依靠 ghttp.Request
对象实现,ghttp.Request
继承了底层的http.Request
对象。ghttp.Request
包含一个与当前请求对应的返回输出对象Response
,用于数据的返回处理。
取决于请求的输入格式
请求输入-复杂参数
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才行) | 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 |
—数组参数
数组参数提交格式形如: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()
}
执行后,我们访问 http://127.0.0.1:8199/?array[]=john&array[]=smith 后,将会得到返回值 ["john","smith"]
。
—Map
参数
Map
参数提交格式形如: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()
}
执行后,我们访问 http://127.0.0.1:8199/?map[id]=1&map[name]=john 后,将会得到返回值 {"id":"1","name":"john"}
。
// 第二种
http://127.0.0.1:8199/?map[use1][id]=1&map[use1][name]=smith&map[use2][id]=2&map[use2][name]=john
{"use1":{"id":"1","name":"smith"},"use2":{"id":"2","name":"john"}}