控制器

基本定义

文件名譬如是:IndexController 。建议和struct名称一模一样。一个文件只能放一个struct

控制器名称建议 是大写首字母+Controller

注意:

1、控制器必须有个Name方法,且必须返回string,没有参数

2、必须是指针结构体

3、必须有个build方法,用来注册路由

常用写法

返回string

func(this *IndexController) Index(ctx *gin.Context) string   {
   return "111"
}

返回json

type Person struct {
	ID string `uri:"id" binding:"required,uuid"`
	Name string `uri:"name" binding:"required"`
}

func(this *IndexController) Index (ctx *gin.Context) Web.Json {
   return &Person{ID:"1111",Name:"wike"}
}

func(this *IndexController) Index(ctx *gin.Context) Web.Json {
   return gin.H{"resut":"test"}
}

抛出错误

func(this *IndexController) Index (ctx *gin.Context) Web.Json {
   u:=&User{}
   fmt.Println(this.Db)
   Web.Error(fmt.Errorf("抛出一个错误"),"这个是返回的提示消息")

}
func(this *IndexController) Index (ctx *gin.Context) Web.Json {
  Web.Throw("错误消息",500,ctx)
}

sql相关

根据sql返回数组对象

func(this *IndexController) Index (ctx *gin.Context) sql.Query   {
   return  sql.SimpleQuery("select * from users where user_id > ?").WithArgs(1)
}

根据sql返回单个对象

func(this *IndexController) Index (ctx *gin.Context) sql.Query   {
   return  sql.SimpleQuery("select * from users where user_id = ?").WithArgs(1).WithFirst()
}

根据sql返回数据添加key 返回数据为 { "result": { "name" : "wike" , "id" : 1 } }

func(this *IndexController) Index (ctx *gin.Context) sql.Query   {
   return  sql.SimpleQuery("select * from users where user_id = ?").WithArgs(1).WithFirst().WithKey("result")
}

根据sql返回数据将数据转换为map后二次加工后返回

func(this *IndexController) Index  (ctx *gin.Context) Web.Json {
   //u:=&User{}
   ret:=  sql.SimpleQuery("select * from users where user_id = ?").WithArgs(1).WithFirst().Get()
   m := ret.(map[string]interface{})
   m["additive"]="添加一些数据"
   return  m
}

最后更新于

这有帮助吗?