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
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM