gin的ShouldBind方法遇到的问题

发布于 2022-09-30 23:10:02 字数 1199 浏览 27 评论 0

// package models
type ListReqInfo struct {
    Keyword   string `form:"keyword" default:""`                       //模糊关键字
    PageNum   int    `form:"pageNum" binding:"required" default:"1"`   //页数
    PageSize  int    `form:"pageSize" binding:"required" default:"10"` //页大小
    OrderName string `form:"orderName" default:"created_on"`           //排序列
    OrderType string `form:"orderType" default:"desc"`                 //排序方式 desc asc
}

// @Tags 文章
// @Summary 分页获取文章
// @Produce  json
// @Param ReqInfo body models.ListReqInfo false "info"
// @Success 200 {object} app.Response
// @Failure 500 {object} app.Response
// @Router /api/v1/article/list [post]
func (a Article) List(c *gin.Context) {
    var (
        appG     = app.Gin{C: c}
        param    models.ListReqInfo
        paramMap map[string]interface{}
    )

    c.ShouldBind(&param)//代码1

     c.ShouldBind(&paramMap)//代码2

    jsonData, _ := c.GetRawData()//代码3也获取不到值

代码1和代码2只要注释任何一行,都能把前端参数填充进来。但两行都不注释,则出现先运行的填充成功,后运行的则无值。
不知道有没有人遇到过,是怎么解决的?

image.png
image.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回忆躺在深渊里 2022-10-07 23:10:03

可以使用 c.ShouldBindBodyWith(¶m,binding.JSON) 方法。

这个方法,body 会cache 到上下文中,重复绑定不会有问题。

神妖 2022-10-07 23:10:03

把返回值error打出来,应该是有error的。error的原因应该是http的request.Body只能读一次,第二次读的时候返回了EOF的错误。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文