Skip to content

控制器定义


说明

控制器文件需要编写在 app/controller 目录下,一般一个模块一个控制器文件

起到映射参数内容呈现的作用

package controller

func UserList(ctx *tg.Context) {
	var req api.UserListReq
	ctx.BindStructValidate(&req)
	res, err := service.UserService().UserList(req)
	if err != nil {
		ctx.Fail("查询失败")
		return
	}
	ctx.Success(res)
}
package controller

func UserList(ctx *tg.Context) {
	var req api.UserListReq
	ctx.BindStructValidate(&req)
	res, err := service.UserService().UserList(req)
	if err != nil {
		ctx.Fail("查询失败")
		return
	}
	ctx.Success(res)
}

成功返回 ctx.Success()

  • @param data 数据,会被转成json格式 (必填)
  • @param option 错误码和消息自定义,不传会用默认值 (选填)
  • -------@param Code 状态码,默认200
  • -------@param Message 提示消息,默认ok
ctx.Success(data, tg.SuccessOption{
    Code: 200,
    Message: "成功",
})
ctx.Success(data, tg.SuccessOption{
    Code: 200,
    Message: "成功",
})

前端会得到

{
    "code": 200,
    "message": "成功",
    "data": null
}
{
    "code": 200,
    "message": "成功",
    "data": null
}

异常返回 ctx.Fail()

  • @param message 错误消息 (必填)
  • @param option 错误码和消息自定义,不传会用默认值 (选填)
  • -------@param StatusCode 状态码,默认200
  • -------@param ErrorCode 提示消息,默认10001
ctx.Fail("参数错误", tg.FailOption{
    StatusCode: 401,
    ErrorCode: 10001,
})
ctx.Fail("参数错误", tg.FailOption{
    StatusCode: 401,
    ErrorCode: 10001,
})

前端会得到

{
    "code": 10001,
    "message": "参数错误",
}
{
    "code": 10001,
    "message": "参数错误",
}

常用错误码

var ErrorCode = &errorCode{
	VALIDATE:    10001, // 验证类错误
	TokenExpire: 10002, // Token过期
	EXCEPTION:   20001, // 服务或代码异常类错误
	MySqlError:  20002, // mysql错误
}
var ErrorCode = &errorCode{
	VALIDATE:    10001, // 验证类错误
	TokenExpire: 10002, // Token过期
	EXCEPTION:   20001, // 服务或代码异常类错误
	MySqlError:  20002, // mysql错误
}

直接输出JSON ctx.JSON()

  • @param code 状态码 (必填)
  • @param data 数据,会被转成json (必填)

直接输出XML ctx.XML()

  • @param code 状态码 (必填)
  • @param data 数据,会被转成xml (必填)

写入缓存信息到链路 ctx.Set()

  • @param key
  • @param value

从链路中获取缓存信息 ctx.Get()

  • @param key
  • @param value

备案号:冀ICP备20015584号-5