控制器,位置:app\http\controller(web|api)\(XXX业务模块)

尽量让控制器成为一个调度器的角色,而不是在这里处理具体业务。
调度器角色:就是在这里将业务拆分给model、service层去处理,控制器只获取处理结果,以及将其他层的处理结果进行组合,统一给客户端响应。
示例代码具体位置:app/http/controller/web/users_controller.go
预览在线代码

  1. type Users struct { }
  2. // 1.用户注册
  3. func (u *Users) Register(context *gin.Context) {
  4. // 由于本项目骨架已经将表单验证器的字段(成员)绑定在上下文,因此可以按照 GetString()、context.GetBool()、GetFloat64()等快捷获取需要的数据类型
  5. // 注意:相关键名规则: 前缀+验证器结构体中的 json 标签
  6. // 注意:在 ginskeleton 中获取表单参数验证器中的数字键(字段),请统一使用 GetFloat64(),其它获取数字键(字段)的函数无效,例如:GetInt()、GetInt64()等
  7. // 当然也可以通过gin框架的上下文原始方法获取,例如: context.PostForm("user_name") 获取,这样获取的数据格式为文本,需要自己继续转换
  8. userName := context.GetString(consts.ValidatorPrefix + "user_name")
  9. pass := context.GetString(consts.ValidatorPrefix + "pass")
  10. userIp := context.ClientIP()
  11. if curd.CreateUserCurdFactory().Register(userName, pass, userIp) {
  12. response.Success(context, consts.CurdStatusOkMsg, "")
  13. } else {
  14. response.Fail(context, consts.CurdRegisterFailCode, consts.CurdRegisterFailMsg, "")
  15. }
  16. }