package main
import (
"context"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
)
const (
TraceIdName = "trace-id"
)
func main() {
s := g.Server()
s.Group("/", func(group *ghttp.RouterGroup) {
group.Middleware(func(r *ghttp.Request) {
ctx := context.WithValue(r.Context(), TraceIdName, "HBm876TFCde435Tgf")
r.SetCtx(ctx)
r.Middleware.Next()
})
group.ALL("/", func(r *ghttp.Request) {
r.Response.Write(r.Context().Value(TraceIdName))
// 也可以使用
// r.Response.Write(r.GetCtxVar(TraceIdName))
})
})
s.SetPort(8199)
s.Run()
}
2 Comments
sanrentai
示例2,
SetCtx
这个方法是在哪个版本加的? 我用
v1.14.6
报错另外问一下,用示例1 的
SetCtxVar
取值时可以用r.Context().Value(TraceIdName)
吗?这个编辑器挺有意思,复制的文字会带上颜色格式。
可以用工具栏清除格式
郭强
你好,这个是
v1.15
版本的新功能,目前在master
分支上。该空间的文档是最新版本的,旧版本的文档请查看空间快捷连接:支持啊,
Value
方法是标准库context
的方法。sanrentai