在GoFrame中,ghttp.Request对象的GetCtx方法可以用来获取请求上下文(context)。Context是一个传递请求相关数据的结构,它可以在中间件之间传递、修改和存储信息。

以下是一个简单的示例,演示如何使用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