我正在使用go-gin并尝试实现PATCH API.3个字段是可编辑的,所以我有一个像这样定义的结构
type Person struct {
Name string `form:"name" json:"name" binding:"required"`
Account string `form:"account" json:"account" binding:"required"`
PrimaryOwner string `form:"primary_owner" json:"primary_owner" binding:"required"`
}
Run Code Online (Sandbox Code Playgroud)
我试图像这样绑定json:
var json Person
if c.BindJSON(&json) == nil {
fmt.Println("json matched!!!!!!!")
}else {
fmt.Println("json not matched!!!!!!!")
}
Run Code Online (Sandbox Code Playgroud)
问题是它试图绑定所有参数.如果我给出所有参数它会匹配,但即使缺少一个参数,它也会进入else块.在补丁API中我不想强制绑定.如果我binding:"required"从所有字段中删除它总是匹配,即使我给了一些关键字sdfsdfsdf.如何绑定所有参数但不能全部绑定.应验证json请求体中的密钥,但不应同时需要所有密钥.
刚刚发现这个问题没有答案。
所以你想绑定所有参数并且需要最少一个
如何绑定所有参数但不是全部绑定在一起。
你几乎在这里回答了你的问题:
如果我从所有字段中删除绑定:“required”,它总是匹配
所以我会删除所需的值并检查每个值。
var json Person
if err := c.BindJSON(&json); err != nil {
// error handling here
// something went wrong
}
if json.Name == "" && json.Account == "" && json.PrimaryOwner == "" {
// no key is given...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1300 次 |
| 最近记录: |