ghttp.Request
对象支持智能的参数类型解析(不区分请求提交方式及请求提交类型),以下为提交参数示例以及服务端对应解析的变量类型:
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
|
同名参数提交格式形如: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("name"))
})
s.SetPort(8199)
s.Run()
}
执行后,我们访问 http://127.0.0.1:8199/?name=john&name=smith 后,将会得到返回值 smith
。
需要注意的是,在标准库net/http
处理中,提交的同名参数将会被转换为字符串数组。
数组参数提交格式形如: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
参数提交格式形如: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"}
。
我们再试试多级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"}}
。
GoFrame框架支持全自动化的接口文档生成,保障代码与接口文档同步维护,自动生成的接口文档采用的是标准的OpenAPIv3协议...
GoFrame框架的WebServer配置管理非常方便,支持多种配置方式以及若干配置方法。配置对象配置对象定义:https://pkg.go.d...
Tornado提供了一个具有异步功能的简单Web框架,允许它扩展到大量打开的连接,使其成为长轮询的理想选择。这是一个简单的“Hello,...
在深入研究依赖注入系统之前,让我们升级前面的例子。来自上一个示例的一个字典在前面的示例中,我们dict从我们的依赖项(“可靠...
除了改变数据库架构外,你还可以使用迁移来改变数据库本身的数据,如果你想的话,还可以结合架构来改变。更改数据的迁移通常称为...
当使用 unique() 或 db_index 的列来检索单个对象时,有两个原因。首先,由于底层数据库索引的存在,查询的速度会更快。...
添加额外的 Manager 方法一般是为模型添加 “表级” 功能的更好方法。(对于 “行级” 功能 —— 即,只操作单个模型对象 —...
自动导入 MyBatis-Plus 测试所需相关配置,通过 @MybatisPlusTest 注解快速配置测试类。添加测试依赖Maven:dependencygroup...