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
}

 

posted on 2024-07-27 18:10  koushr  阅读(17)  评论(0编辑  收藏  举报

导航