GoFrame 的 gvalid:校验放入口层,不放领域层
gvalid 很适合处理请求参数的格式校验,比如必填、长度、范围、枚举。但它不应该替代业务规则。
例如“用户名必须 2 到 20 个字符”可以在入口层校验,“用户名是否已存在”应该在 service 中查询后判断。前者是输入格式,后者是业务状态。
type CreateReq struct {
Name string `v:"required|length:2,20#名称不能为空|名称长度不正确"`
}入口层校验失败直接返回 400 或业务参数错误;业务层校验失败返回明确业务码。两类错误分开,日志和监控也更容易分类。
校验放对位置,会让 service 不依赖 HTTP 细节,也让接口层不会背上业务状态判断。
分类:
GoFrame 实践
标签:
GoFrame gvalid 分层
版权申明
本文系作者 @blogger 原创发布在GoFrame 的 gvalid:校验放入口层,不放领域层。未经许可,禁止转载。
评论
-- 评论已关闭 --
全部评论