golang gin 跨路由 传输数据
在Gin中,可以使用Context对象来跨路由传输数据。Context对象是每个HTTP请求的上下文,包含了HTTP请求和响应的信息。通过Context对象可以获取请求参数、设置响应头和正文等。
下面是一个示例代码,演示如何在不同的路由之间传输数据:
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
// 定义一个map来存储数据
data := make(map[string]interface{})
// 路由1:设置数据
r.GET("/set", func(c *gin.Context) {
// 设置数据
data["name"] = "Alice"
data["age"] = 18
// 返回结果
c.JSON(200, gin.H{
"message": "Data set successfully",
})
})
// 路由2:获取数据
r.GET("/get", func(c *gin.Context) {
// 获取数据
name, ok := data["name"].(string)
if !ok {
name = ""
}
age, ok := data["age"].(int)
if !ok {
age = 0
}
// 返回结果
c.JSON(200, gin.H{
"name": name,
"age": age,
})
})
r.Run(":8080")
}
在这个示例中,我们定义了一个map来存储数据。在路由1中,我们设置了数据,然后在路由2中获取数据并返回。因为Context对象是每个请求独立的,所以我们可以在不同的路由中使用同一个map来传输数据。
注意:在实际开发中,为了避免出现并发问题,我们需要使用线程安全的数据结构来存储数据,比如sync.Map。同时,为了避免数据被篡改,我们需要在数据读写时加锁。
原文地址: https://www.cveoy.top/t/topic/qNu 著作权归作者所有。请勿转载和采集!