控制器,位置:app\http\controller(web|api)\(XXX业务模块)
尽量让控制器成为一个调度器的角色,而不是在这里处理具体业务。
调度器角色:就是在这里将业务拆分给model、service层去处理,控制器只获取处理结果,以及将其他层的处理结果进行组合,统一给客户端响应。
示例代码具体位置:app/http/controller/web/users_controller.go
预览在线代码
type Users struct { }
// 1.用户注册
func (u *Users) Register(context *gin.Context) {
// 由于本项目骨架已经将表单验证器的字段(成员)绑定在上下文,因此可以按照 GetString()、context.GetBool()、GetFloat64()等快捷获取需要的数据类型
// 注意:相关键名规则: 前缀+验证器结构体中的 json 标签
// 注意:在 ginskeleton 中获取表单参数验证器中的数字键(字段),请统一使用 GetFloat64(),其它获取数字键(字段)的函数无效,例如:GetInt()、GetInt64()等
// 当然也可以通过gin框架的上下文原始方法获取,例如: context.PostForm("user_name") 获取,这样获取的数据格式为文本,需要自己继续转换
userName := context.GetString(consts.ValidatorPrefix + "user_name")
pass := context.GetString(consts.ValidatorPrefix + "pass")
userIp := context.ClientIP()
if curd.CreateUserCurdFactory().Register(userName, pass, userIp) {
response.Success(context, consts.CurdStatusOkMsg, "")
} else {
response.Fail(context, consts.CurdRegisterFailCode, consts.CurdRegisterFailMsg, "")
}
}