照着教程 错误处理 · go-zero document 学习go-zero框架的时候,发现不传某个参数的时候,返回数据为空,控制台提示error
仔细看了下 自定义错误代码:
const defaultCode = 1001
type CodeError struct {
Code int `json:"code"`
Msg string `json:"msg"`
}
type CodeErrorResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
}
func NewCodeError(code int, msg string) error {
return &CodeError{Code: code, Msg: msg}
}
func NewDefaultError(msg string) error {
return NewCodeError(defaultCode, msg)
}
func (e *CodeError) Error() string {
return e.Msg
}
func (e *CodeError) Data() *CodeErrorResponse {
return &CodeErrorResponse{
Code: e.Code,
Msg: e.Msg,
}
}
API代码:
type UserLoginReq {
Username string `form:"username"`
Password string `form:"password"`
}
实现代码:
if len(strings.TrimSpace(req.Username)) == 0 || len(strings.TrimSpace(req.Password)) == 0 {
return nil, errorx.NewDefaultError("参数错误")
}
都没有问题,后面看文档发现,go-zero里面的参数是必填的,自己选择自定义错误,参数没填,过不了框架里面的第一步校验,故将参数改为可选填的,然后再由代码校验即可
type UserLoginReq {
Username string `form:"username,optional"`
Password string `form:"password,optional"`
}
或者直接跟demo一样
type UserLoginReq {
Username string `json:"username"`
Password string `json:"password"`
}
然后提交的时候用: