以下是一个简单的示例,演示如何使用Context来传递和获取数据:
package main
import (
"fmt"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
)
func main() {
s := g.Server()
// 注册路由
s.BindHandler("/user", func(r *ghttp.Request) {
// 在Context中设置数据
r.SetCtxVar("userId", 123)
r.SetCtxVar("userName", "John")
// 在中间件中获取Context中的数据
r.Middleware(func() {
userId := r.GetCtxVar("userId")
userName := r.GetCtxVar("userName")
fmt.Printf("UserID: %v, UserName: %v\n", userId, userName)
})
// 在请求处理函数中获取Context中的数据
userId := r.GetCtxVar("userId")
userName := r.GetCtxVar("userName")
// 打印获取的变量值
fmt.Printf("UserID: %v, UserName: %v\n", userId, userName)
// 返回成功响应
r.Response.Write("请求成功")
})
// 启动 Web 服务器
s.Run()
}
在这个示例中,我们使用SetCtxVar方法在请求的上下文中设置了两个自定义变量,然后在中间件和请求处理函数中通过GetCtxVar方法获取这些变量的值。Context的数据是在整个请求周期中有效的。
这种方式可以用来在请求的不同处理阶段传递和共享数据,例如在中间件中记录请求日志、在请求处理函数中获取用户身份信息等。
转载请注明出处:http://www.zyzy.cn/article/detail/7823/GoFrame