编写控制器

进入到文件app/controller/democontroller/DemoController.go


案例

控制器方法是一个统一的类型: type HandlerFunc func(*Context),只要符合HandlerFunc 定义格式即可

  1. package democontroller
  2. import (
  3. "net/http"
  4. "gaea/app/service/demoservice"
  5. "github.com/tal-tech/loggerX"
  6. "gaea/utils"
  7. "github.com/gin-gonic/gin"
  8. )
  9. //Gin handler
  10. func MyXesGoDemo(ctx *gin.Context) {
  11. //把gin.Context 对象转换成原生 context.Context 对象
  12. goCtx := utils.TransferToContext(ctx)
  13. //接受参数
  14. param := ctx.PostForm("param")
  15. ret, err := demoservice.DoFun(goCtx, param)
  16. if err != nil {
  17. logger.Ex(goCtx, "MyXesGoDemo", "demoservice.DoFun err:%v, param:%+v", err, param)
  18. //转换成统一的输出格式
  19. resp := utils.Error(err)
  20. ctx.JSON(http.StatusOK, resp)
  21. } else {
  22. //转换成统一的输出格式
  23. resp := utils.Success(ret)
  24. ctx.JSON(http.StatusOK, resp)
  25. }
  26. }

注意

  • 控制器内严禁在不加锁的情况下,对全局变量进行写操作,否则可能由于并发导致的数据错乱问题