API数据返回
现在Web应用多是前后端分离,返回数据为JSON格式,前面所说的WriteJson
这样的方法只是单纯将提供的数据进行JSON转换后返回,在实际开发中,返回的JSON数据通常为以 下结构(具体项目会有差异,但基本都是类似结构):
{
"code":0, // 自定义编码,用来表示请求成功与失败
"msg":"请求成功", // 提示信息,如果请求出错则为错误信息
"data":{} // 请求返回数据,请求出错一般为null
}
GoFrame为前后端分离的API开发提供了很好的支持,只需要借助api
模块就可以方便完成类似的返回结构,不需要自行定义。
操作步骤如下:
- 在
api
中定义请求与响应数据结构
type ApiReq struct {
g.Meta `path:"/api" method:"all"`
}
type ApiRes struct {
UserName string `json:"name"`
UserAge int `json:"age"`
List g.Array `json:"list"`
}
- 在控制器中定义对应的方法
func (c *Controller) Api(ctx context.Context, req *api.ApiReq) (res *api.ApiRes, err error) {
return
}
实例化返回数据并返回
res = &api.ApiRes{
UserName: "张三",
UserAge: 120,
List: g.Array{1, 2, 3, 4},
}
return
如果有错误,定义错误信息并直接返回
err = gerror.Newf("服务器开小差了")
return
用上述方法返回数据,会自动返回如下格式JSON数据
{
"code":0,
"message":"",
"data":{
"name":"张三",
"age":120,
"list":[1,2,3,4]
}
}
以上数据格式是通过中间件ghttp.MiddlewareHandlerResponse
实现的,实际应用当中可以仿照这一中间件自行定义中间件来确定需要的数据返回格式。