zoukankan      html  css  js  c++  java
  • golang 组装返回json数据,提供api接口

    model里

    package model
    
    type Setting struct {
       Key   string `gorm:"primary_key" json:"key"`
       Value string `json:"value"`
    }
    
    // @desc 按Key获设置
    func (Setting *Setting) GetSettingInfo(Key string) (setting Setting) {
       db.Model(&Setting).Where("`key` = ?", Key).First(&setting)
       return
    }
    

    controller里

    一.2层数据

    1.普通方法:
    控制器里

    package Controller
    
    import (
       "encoding/json"
       "github.com/Unknwon/com"
       . "github.com/gin-gonic/gin"
       "linkbook.com/LinkBookGo/App/model"
       "linkbook.com/LinkBookGo/lib/httpext"
    )
    
    var SettingModel = model.Setting{}
    
    
    //认证展示页面选卡
    type CommonParam struct {
       CashOutMoneyFeerate        int `json:"cash_out_money_feerate"`
    }
    //获取常用配置参数
    /**
    * 提现手续费
    * 请求方式 [GET]
    * 线上请求地址 https://api.ibanana.club/setting/get_setting?key=common_param
    * 本地请求地址 http://localhost:8811/setting/get_setting?key=common_param
    * token [string] [必填] 写在Header头里
    * Author Haima
     */
    func GetSetting(context *Context) {
       Key := com.StrTo(context.DefaultQuery("key", "")).String()
       setting_info1 := SettingModel.GetSettingInfo(Key)
       var CommonParamList CommonParam
       json.Unmarshal([]byte(setting_info1.Value),&CommonParamList)
       httpext.SuccessExt(context, CommonParamList)
    }
    

    返回数据:

    {
        "data": [
            {
                "time": 10,
                "pre_num": 10,
                "gold_coin_num": 100
            },
            {
                "time": 20,
                "pre_num": 20,
                "gold_coin_num": 200
            },
            {
                "time": 30,
                "pre_num": 30,
                "gold_coin_num": 300
            },
            {
                "time": 40,
                "pre_num": 40,
                "gold_coin_num": 400
            },
            {
                "time": 50,
                "pre_num": 50,
                "gold_coin_num": 500
            },
            {
                "time": 70,
                "pre_num": 70,
                "gold_coin_num": 700
            }
        ],
        "errmsg": "ok",
        "errno": 200
    }
    

    二.2层数据

    func CashoutMoneyList(ctx *Context) {
       setting_info1 := SettingModel.GetSettingInfo("cash_out_money_list")
       //认证展示页面选卡
       type cashoutMoney struct {
          ID           int `json:"id"`
          Money        int `json:"money"`
          GoldCoin     int `json:"gold_coin"`
          SignInDays   int `json:"sign_in_days"`
          InvitePerNum int `json:"invite_per_num"`
       }
    
       var cashoutMoneyList []cashoutMoney
       json.Unmarshal([]byte(setting_info1.Value),&cashoutMoneyList)
    
       type cashoutRes struct {
          CashOutMoneyFeerate int `json:"cash_out_money_feerate"`
          List []cashoutMoney `json:"cashout_money_lists"`
       }
       res := cashoutRes{
          CashOutMoneyFeerate:10,
          List:cashoutMoneyList,
       }
       httpext.SuccessExt(ctx, res)
    }
    
    

    返回结果:

    {
        "data": {
            "cash_out_money_feerate": 10,
            "cashout_money_lists": [
                {
                    "id": 1,
                    "money": 1,
                    "gold_coin": 100,
                    "sign_in_days": 3,
                    "invite_per_num": 3
                },
                {
                    "id": 2,
                    "money": 2,
                    "gold_coin": 200,
                    "sign_in_days": 6,
                    "invite_per_num": 6
                },
                {
                    "id": 3,
                    "money": 3,
                    "gold_coin": 300,
                    "sign_in_days": 9,
                    "invite_per_num": 9
                },
                {
                    "id": 4,
                    "money": 4,
                    "gold_coin": 400,
                    "sign_in_days": 12,
                    "invite_per_num": 12
                },
                {
                    "id": 5,
                    "money": 5,
                    "gold_coin": 500,
                    "sign_in_days": 15,
                    "invite_per_num": 15
                }
            ]
        },
        "errmsg": "ok",
        "errno": 200
    }
    

    方法 2:返回kv形式的

    controller.go里

    func GetCompanyList(ctx *Context) {
       companyName := ctx.Query("company_name")
       page := com.StrTo(ctx.DefaultQuery("page", "1")).MustInt()
       row := com.StrTo(ctx.DefaultQuery("row", "10")).MustInt()
       offset := (page - 1) * row
       cm := model.Company{}
       companyList := cm.GetCompaniesLikeName(companyName, offset, row)
       companyMap := make(map[int]string)
       for _, v := range companyList {
          companyMap[v.ID] = v.CompanyName
       }
       res := make(map[string]interface{})
       res["list"] = companyMap
       httpext.SuccessExt(ctx, res)
    }
    

    model.go里

    func (c *Company) GetCompaniesLikeName(name string, offset int, row int) (companies []Company) {
       db.Model(c).Where("company_name like ?", "%"+name+"%").Offset(offset).Limit(row).Find(&companies)
       return
    }
    

    返回参数:

    {
        "data": {
            "9": "北京陶然雅居古典家具有限公司",
            "12": "北京理工至信技术开发有限公司",
            "13": "北京市汇丰通达贸易有限责任公司",
            "14": "北京亿翔工程技术有限公司",
            "20": "北京金裕腾达商贸有限公司",
            "22": "北京同一首歌传媒广告有限公司",
            "34": "北京祥昌华通通信器材有限公司",
            "40": "北京启迅网安科技有限公司上海分公司",
            "44": "北京芝麻视界教育科技有限公司",
            "47": "北京亚环传媒科技有限公司"
        },
        "errmsg": "ok",
        "errno": 200
    }
    
  • 相关阅读:
    linux下安装elasticsearch5.6.3
    linux下安装git
    环境安装备忘录 Zookeeper
    环境安装备忘录 JDK
    环境安装备忘录 Tomcat
    MySql 通过show status 优化数据库性能
    MySQL执行计划解读 转他人文章
    2015年12月21日 my.cnf 配置
    mysql 如何查看my.cnf的 位置
    mysql状态查看 QPS/TPS/缓存命中率查看
  • 原文地址:https://www.cnblogs.com/haima/p/11642005.html
Copyright © 2011-2022 走看看