How to pass values from one handlerFunc to another go-gin

huangapple go评论90阅读模式
英文:

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

huangapple
  • 本文由 发表于 2016年8月25日 17:17:56
  • 转载请务必保留本文链接:https://go.coder-hub.com/39141265.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定