Beego 公共方法返回JSON

Mr_dreamer · · 1210 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

容我废话一会,懒得看直接看正文

最近没事想写个blog学习一下go,发现了beego这个框架真的非常像PHP中的thinkphp框架,上手很简单的样子,于是简单看了看文档介绍什么的就开始写了,后台用vue-admin-template,然后beego写api,平时写原生PHP习惯了,都会封装公共方法Error()/Success() 什么的返回json,突然发现beego文档里只写了控制器返回json,而且比较麻烦

this.Data["json"] = json
this.ServeJSON()

于是,像往常一样,想做个公共文件,用来存放公共方法,开始还写了一个common包,然后发现不知道该怎么引controller中的方法进行输出,后来就想到了公共控制器这种,于是实现了下面的这种方法。

以下是正文

首先创建一个基类BaseController ,基类继承beego.Controller

package controllers

import (
    "github.com/astaxie/beego"
)

type BaseController struct {
    beego.Controller
}

type ReturnMsg struct {
    Code int
    Msg  string
    Data interface{}
}

func (this *BaseController) SuccessJson(data interface{}) {

    res := ReturnMsg{
        200, "success", data,
    }
    this.Data["json"] = res
    this.ServeJSON() //对json进行序列化输出
    this.StopRun()
}

func (this *BaseController) ErrorJson(code int, msg string, data interface{}) {

    res := ReturnMsg{
        code, msg, data,
    }

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

然后需要的地方继承这个基类

package admin

import (
        //如果不是同一个包需要引入一下
    //"blog/controllers"
    "blog/models"
)

type CategoryController struct {
        //不是同一个需要这样
    //controllers.BaseController
        BaseController
}

func (this *CategoryController) List() {
    data, err := models.List()
    if err != nil {
        this.ErrorJson(500, err.Error(), nil)
    }

    this.SuccessJson(data)

}

func (this *CategoryController) Create() {
    title := this.GetString("title")

    if title == "" {
        this.ErrorJson(503, "缺少必要参数", nil)
    }

        //省略代码

    id := 1
    this.SuccessJson(id)
}

本人刚接触golang,水平有限,希望能对您有所帮助


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Mr_dreamer

查看原文:Beego 公共方法返回JSON

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1210 次点击  
加入收藏 微博
下一篇:leetcode_1042
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传