在gin代码中使用了goroutine处理POST请求过来的json数据
以下示例代码中,绑定请求获得的data,经常除了第一次有数据以外,其它请求获得都是一个空map,这个代码有什么问题?
有没有老大指教一下
```
package main
import (
"fmt"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.POST("/task", task)
r.Run()
}
func task(c *gin.Context) {
cc := c.Copy()
go func (c *gin.Context) {
data := make(map[string]interface{})
c.ShouldBindJSON(&data)
fmt.Println("task start")
fmt.Println(data)
fmt.Println("task end")
} (cc)
c.JSON(200, gin.H{
"result": "success",
})
}
```
Context被复制了,不等于Request被复制了。
请求体是一次性的,读完了就没有了。
Bind的时候是有error的,可惜你忽略了,那里发生EOF了。
#4
更多评论
```
data := make(map[string]interface{})
c.ShouldBindJSON(&data)
```
把它放到goroutine之外呢,参数传data
#1