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   koushr  阅读(18)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2020-07-27 go基础第一篇:并发之channel
点击右上角即可分享
微信分享提示