英文:
How to pass values from one handlerFunc to another go-gin
问题
我有一个定义为以下形式的 REST API:
apis.GET(/home, validatationHandler , dashboardHandler)
我想从 validatationHandler
传递一些数据给 dashboardHandler
。为此,我考虑使用头部信息(header)。在 validatationHandler
中,我使用以下代码来设置数据:
c.Writer.Header().Set("myheader", "mytoken")
c.Next()
然后,在 dashboardHandler
中,我尝试使用以下代码来访问该数据:
fmt.Println(c.Request.Header.Get("myheader"))
但是,该值始终为 nil
。你有什么想法如何设置和获取头部信息?还有其他方法可以在一个处理程序中传递数据给另一个处理程序吗?
英文:
I have rest API defined as
apis.GET(/home, validatationHandler , dashboardHandler)
I want pass some data from validatationHandler to dashboardHandler. For this I thought of using header. To set the data I use this in validatationHandler
c.Writer.Header().Set("myheader", "mytoken")
c.Next()
and in dashboardHandler I tried to access it using
fmt.Println(c.Request.Header.Get("myheader"))
But the value is always nil. Any idea how can I set and retrieve headers? Is there any other way I can pass on the data from 1 handler to another?
答案1
得分: 2
你可以通过gin.Context
传递值。
在第一个位置使用ctx.Set(k, v)
,在下一个位置使用ctx.Get(k)
。
使用方法如下:
ctx.Set("myKey", 100)
然后通过以下方式获取:
v, ok := ctx.Get("myKey")
if ok {
actualValue := v.(int) // 由于返回的是接口类型,你需要进行类型转换。
}
参考 context.go
英文:
You can pass values via gin.Context
Use ctx.Set(k, v)
in fisrt one and ctx.Get(k)
in the next.
So How to Use It:
ctx.Set("myKey", 100)
and get it using
v, ok := ctx.Get("myKey")
if ok {
actualValue := v.(int) // you need to type convert it as it returns interface.
}
See context.go
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论