我的基本main设置:
muxRouter := mux.NewRouter()
v1Router.Router(muxRouter.PathPrefix("/v1").Subrouter())
http.Handle("/", muxRouter)
n := negroni.Classic()
n.Use(negroni.HandlerFunc(apiRouter.Middleware))
n.UseHandler(muxRouter)
s := &http.Server{
Addr: ":6060",
Handler: n,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
}
log.Fatal(s.ListenAndServe())
在里面apiRouter.Middleware我设置了以下上下文:
context.Set(req, helperKeys.DomainName, "some-value")
但是,在某些 handlerFunc 内v1Router.Router尝试获取Get上下文的值时,结果为 nil:
domain := context.Get(req, helperKeys.DomainName)
fmt.Println("DomainName", domain)
印刷:DomainName <nil>
我知道该Set方法是正确的,因为在将其设置后立即获取该值apiRouter.Middleware将返回正确的字符串值。