gin入参多次获取
在middleware层不要用ShouldBind函数绑定body中的参数,因为ShouldBind执行完后,request中body就空了,业务层就拿不到body了。用下面的代码即可,先拿后放。
userIdReq := new(UserIdReq) var err error if c.Request.Method == "GET" { err = c.ShouldBindQuery(userIdReq) } else if (c.Request.Method == "POST" || c.Request.Method == "DELETE") && strings.Contains(c.ContentType(), "application/json") { body, _ := c.GetRawData() c.Request.Body = io.NopCloser(bytes.NewBuffer(body)) err = json.Unmarshal(body, userIdReq) } else { c.Abort() return }