大致思路就是写一个公用文件然后去引入调用公共文件的方法,包含成功和失败两个方法。成功失败都是大家熟知的三个参数:code、msg、data。其中code就是成功失败的识别码为int类型,msg为文字提示为string类型,data可接受任意类型成功请求的数据等等...;成功时:我这里code为固定200,msg设为自定义成功消息如果传空字符串的话为默认值,data必传值自定义类型;失败时:所有参数均为必传,具体我们直接看代码;
1、目录结构如下图,此处我新建的为:根目录/common/defauit.go:
2、公共文件的代码,/common/defauit.go的代码:
package common
/* @Author: simon */
/* @Description: 统一返回信息 */
/* @File: return_json */
/* @Version: 1.0.0 */
/* @Date: 2023/09/05 17:18 */
/* @Software : GoLand */
import (
beego "github.com/beego/beego/v2/server/web"
)
type ReturnController struct {
beego.Controller
}
type ReturnMsg struct {
Code int
Msg string
Data interface{}
}
// SuccessJson
// @Description: 代码实现成功时调用
// @receiver r
// @param msg 自定义成功消息
// @param data 自定义成功返回内容
func (r *ReturnController) SuccessJson(msg string, data interface{}) {
if msg == "" {
msg = "success"
}
res := ReturnMsg{
200, msg, data,
}
r.Data["json"] = res
err := r.ServeJSON()
if err != nil {
return
}
r.StopRun()
}
// ErrorJson
// @Description: 出现异常时调用
// @receiver r
// @param code 自定义异常编码
// @param msg 自定义异常消息
// @param data 自定义异常返回信息
func (r *ReturnController) ErrorJson(code int, msg string, data interface{}) {
res := ReturnMsg{
code, msg, data,
}
r.Data["json"] = res
err := r.ServeJSON()
if err != nil {
return
}
r.StopRun()
}
3、控制器文件使用代码:*注:此处必须谨记不能重复继承方法,不然会报错的
package api
import (
"myproject/common"
)
type OrderController struct {
//beego.Controller *注:此处之所以不在继承beego.Controller是因为下面引入的公共return方法当中已经继承过了,如果重复继承会报错的
common.ReturnController
}
func (o *OrderController) Post() {
data := o.Ctx.Input.Context.Request.Form
if _, ok := data["ids"]; !ok {
o.ErrorJson(400, "缺少参数!", "data自定义数据")
}
o.SuccessJson("请求成功!", "data自定义数据")
}
4、完成之后调用接口如下图: