在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",
})
}
```
模拟浏览器方法默认为 GET。如果使用 POST方法,必须先设置POST模式、然后调用 post 方法。
上述代码的协程可能在 c.JSON(...) 后面执行,GET模式下无法接收内容体,导致失败。
#6
更多评论
```
data := make(map[string]interface{})
c.ShouldBindJSON(&data)
```
把它放到goroutine之外呢,参数传data
#1