在 Gin 框架中如何实现所有控制器都能获取的公共数据?

在 gin 框架中如何实现所有控制器都能获取的公共数据?

gin 框架中实现公共数据访问

对于在 php 中通过继承实现公共数据访问,gin 框架提供了替代方案。在 gin 中,公共数据可以分为两类:

全局变量:
用于存储全球统一共享的变量,如数据库地址、站点名称等。可以直接使用 gin 提供的全局变量,无需特殊处理。

通过中间件设置上下文变量:
用于在同一次请求内部共享变量。可以使用 gin 的中间件机制实现。

实现步骤:

  1. 定义一个中间件,在其中设置需要共享的变量。
  2. 在路由注册处注册中间件,保证该中间件在所有控制器之前执行。
  3. 在控制器中通过 context.get() 获取共享变量。

代码示例:

app := gin.New()

// 定义中间件,设置共享变量
app.Use(func(context *gin.Context) {
    context.Set("abc", "val")
})

// 注册路由,保证中间件在前执行
app.GET("/test", func(context *gin.Context) {
    data, _ := context.Get("abc")
    context.HTML(200, data.(string), nil)
})

通过这种方式,可以在 gin 框架中实现所有控制器都能获取的公共数据。

以上就是在 Gin 框架中如何实现所有控制器都能获取的公共数据?的详细内容,更多请关注其它相关文章!