客户端参数 { id:20 sign:90cb901a631a3260c59d90724e893da9 timestamp:1681459261 role_id:3 } 注意:不是表单key value格式,是整个json数据 后端处理 type ArticleCommentLikeForm struct { ID int32 form:"id" alias:"ID" binding:"required" Timestamp int32 form:"timestamp" alias:"文章ID" binding:"required" Sign string form:"sign" alias:"文章ID" binding:"required" RoleId int32 form:"role_id" alias:"角色ID" binding:"required" } var param ArticleCommentLikeForm err := ctx.ShouldBind(¶m); 获取不到RoleId的值
Q
[gin-gonic/gin]request body使用ShouldBind绑定结构体,form参数带下划线就获取不到
0
A
回答
8
既然是json数据,就不应该使用tag 'form'了,换成'json'
8
just as :
type ArticleCommentLikeForm struct {
ID int32 alias:"ID" binding:"required" json:"id"
Timestamp int32 alias:"文章ID" binding:"required" json:"timestamp"
Sign string alias:"文章ID" binding:"required" json:"sign"
RoleId int32 alias:"角色ID" binding:"required" json:"role_id"
}
1
嗯嗯,json确实可以,但是如果参数不带下划线的话,form也是可以接受数据的,这是什么原因?
0
我猜测是你的请求头中包含"Content-Type":"application/json"
,gin将其通过ShouldBindJSON()
解析到结构体中,但是没有检查到字段有json tag,则默认key为字段名的小写形式,也就是form tag其实并不起作用