我正在使用 Beego 开发 Web 服务器。
我曾经beego.Controller处理过 POST 请求。在我的例子中,POST 请求包含一个 JSON:
{
"name": "titi",
"password": "123456"
}
这是我的代码:
type TestController struct {
beego.Controller
}
type User struct {
Name string `json:"name"`
Password string `json:"password"`
}
func (c *TestController) Post() {
var ob md.User
var err error
if err = json.Unmarshal(c.Ctx.Input.RequestBody, &ob); err == nil {
logs.Debug(ob.Name)
logs.Debug(len(ob.Name))
} else {
logs.Error("illegal JSON")
}
}
这段代码工作正常。在 struct 的标签的帮助下User,"name"被分配给ob.Name和"password"被分配给ob.Password.
现在,我想测试一些异常情况。例如,如果 JSON 请求不包含预期的键怎么办:
{
"illegalKey1": "titi",
"illegalKey2": "123456"
}
如您所见,我期待"name"and"password"但现在键变为"illegalKey1"and "illegalKey2"。所以我认为这可能会导致一些错误。
令我惊讶的是,没有任何错误,因为err == nil它仍然是正确的,len(ob.Name)现在只是变成了 0。
那么在 Go/Beego 中是否有一些好的方法来处理这种情况?
我的意思是,我知道
if len(ob.Name) == 0 {
logs.Error("illegal JSON")
}
没关系,但我想知道是否有某种更漂亮的代码?否则,如果 JSON 中有 10 个字段,我必须这样做if10 次。显然,这根本不好。
大话西游666
牧羊人nacy
随时随地看视频慕课网APP
相关分类