beego下实现JSON格式数据返回

发布时间:2021-05-14编辑:RainNight阅读(249)

    beego下实现JSON格式数据返回


    • 在编写程序是通常需要返回数据格式为

      this.Data["json"] = res
      	this.ServeJSON() // 对json进行序列化输出
      	this.StopRun()
      

      但是返回的数据格式有点问题,所以只有自己封装一套数据返回格式。

    • 定义路由

      package routers
      
      import (
      	beego "github.com/beego/beego/v2/server/web"
      )
      
      func init() {
      	// 测试使用的类
      	beego.Router("/list", &blog.ArticleController{}, "*:List")
      }
      
    • 定义base基础类


    package blog
    
    import beego "github.com/beego/beego/v2/server/web"
    
    type CommonController struct {
    	beego.Controller
    }
    
    // 定义返回的结构体
    type ReturnMsg struct {
    	Code int
    	Msg  string
    	Data interface{}
    }
    
    // 正确返回的json格式
    func (this *CommonController) Success(data interface{}) {
    	res := ReturnMsg{
    		200, "success", data,
    	}
    
    	this.Data["json"] = res
    	this.ServeJSON() // 对json进行序列化输出
    	this.StopRun()
    }
    
    // 错误返回的json格式
    func (this *CommonController) Fail(code int, msg string, data interface{}) {
    	res := ReturnMsg{
    		code, msg, data,
    	}
    
    	this.Data["json"] = res
    	this.ServeJSON() //对json进行序列化输出
    	this.StopRun()
    }
    
    • model类的定义

    package models
    
    import (
    	"github.com/beego/beego/v2/client/orm"
    	"strconv"
    	"strings"
    	"fmt"
    )
    
    //标签表
    type Tag struct {
    	Id    int64
    	Name  string `orm:"size(20);index"`
    	Count int64
    }
    
    func (m *Tag) TableName() string {
    	return TableName("tag")
    }
    
    //表查询
    func (m *Tag) Query() orm.QuerySeter {
    	return orm.NewOrm().QueryTable(m)
    }
    
    • 然后在需要使用的地方,继承基类即可。

    package blog
    
    import "blog/models"
    
    
    type ArticleController struct {
    	CommonController
    }
    
    //
    func (this *ArticleController) List() {
    
    	var news []models.Tag
    
    	_, err := new(models.Tag).Query().Filter("Count",1).All(&news)
    
    	if err != nil {
    		this.Fail(500, err.Error(), nil)
    	}
    
    	this.Success(news)
    }
    
    • 最终结果:

    # 在postman下输入
    http://127.0.0.1:9090/list
    

    file

关键字Golang

Collect from 雨夜的博客 雨夜的博客