golang 组装返回json数据,提供api接口

时间:2021-11-24 21:40:28

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
}

golang 组装返回json数据,提供api接口的更多相关文章

  1. JSON API免费接口 各种提供JSON格式数据返回服务网站的API接口

    这里为大家搜集了一些能够返回JSON格式的服务接口.部分需要用JSONP调用. 电商接口 京东获取单个商品价格接口: http://p.3.cn/prices/mgets?skuIds=J_商品ID& ...

  2. Web API返回JSON数据

    对Web API新手来说,不要忽略了ApiController 在web API中,方法的返回值如果是实体的话实际上是自动返回JSON数据的例如: 他的返回值就是这样的: { "Conten ...

  3. java通过url调用远程接口返回json数据

    java通过url调用远程接口返回json数据,有用户名和密码验证, 转自 https://blog.csdn.net/wanglong1990421/article/details/78815856 ...

  4. 亿级用户下的新浪微博平台架构 前端机(提供 API 接口服务),队列机(处理上行业务逻辑,主要是数据写入),存储(mc、mysql、mcq、redis 、HBase等)

    https://mp.weixin.qq.com/s/f319mm6QsetwxntvSXpKxg 亿级用户下的新浪微博平台架构 炼数成金前沿推荐 2014-12-04 序言 新浪微博在2014年3月 ...

  5. C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法

    这几天,调用别人接口返回json数据含有特殊符号(双引号),当转换成json对象总是报错, json字符格式如下 { "BOXINFO":[ { ", "ITE ...

  6. (2)Spring Boot返回json数据【从零开始学Spring Boot】

    在做如下操作之前,我们对之前的Hello进行简单的修改,我们新建一个包com.kfit.test.web 然后新建一个类HelloControoler, 然后修改App.java类,主要是的这个类就是 ...

  7. Spring MVC返回json数据给Android端

    原先做Android项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json ...

  8. C#从http上拿返回JSON数据

    C#如何拿到从http上返回JSON数据? 第一章:C#如何拿到从http上返回JSON数据? 第二章:C#如何解析JSON数据?(反序列化对象) 第三章:C#如何生成JSON字符串?(序列化对象) ...

  9. 前台返回json数据的常用方式+常用的AJAX请求后台数据方式

    我个人开发常用的如下所示: 之所以像下面这样下,一是前台Ajax,二是为安卓提供接口数据 现在常用的是返回JSON数据,XML的时代一去不复返 JSON相对于XML要轻量级的多 对JSON不是十分熟悉 ...

随机推荐

  1. IM客户端Socks 5代理协议应用

    之前编写的一个基于openfire服务器的即时通讯软件,因为部署环境需要,需要增加代理登录通信的实现.整理了一下相关代理的知识分享一下. 一个基于TCP协议的客户端希望与一个只能通过特定网络节点才可以 ...

  2. 在JS函数中执行C#中的函数、字段

    1.调用字段 cs文件的代码: ; protected void Page_Load(object sender, EventArgs e) { id = ; } js页面的代码: function ...

  3. Js判断CSS文件加载完毕的实例教程

    要判断这个 CSS 文件是否加载完毕,各个浏览器的做法差异比较大,这次要说IE浏览器做的不错,我们可以直接通过onload方法来处理CSS加载完成以后的处理: 代码如下 复制代码 // 代码节选至se ...

  4. 教程-(SQL DBE、ADO连接)+(Firebird火鸟+DbExpress)+(VF DBF数据库)+(DB Paradox)

    DBE 连接SQL Server显然用ADO或DBEXPRESS更有优势,起码连接起来比较方便. BDE的话可以用如下方法:(以下以Delphi7为例,其它版本的DELPHI请自己摸索一下,不过基本相 ...

  5. 关于打开Eclipse时出现eclipse failed to create the java virtual machine与locking is not possible in the direc

    原文转自:http://www.cnblogs.com/steararre/p/4037453.html 今天在机子上使用Eclipse时候打开发现这两个问题,通过查阅资料膜拜大神博客得知解决方法,特 ...

  6. Socket一些常用的方法封装

    public class SocketHelper { /// <summary> /// 功能描述:得到一个实例对象 /// </summary> /// <retur ...

  7. thinkpad X1 extreme 安装Ubuntu 18&period;04&period;2 LTS

    1.安装的时候需要禁用:nouveau.modeset=0 2.安装完成之后需要添加:acpi=off ,ro后面加上3,直接进入终端 3.启动之后:安装nvdia驱动 $ ubuntu-driver ...

  8. PHP原理之变量

    作者: Laruence(   ) 本文地址: http://www.laruence.com/2008/08/22/412.html 转载请注明出处 或许你知道,或许你不知道,PHP是一个弱类型,动 ...

  9. HDU 3268&sol;POJ 3835 Columbus’s bargain(最短路径&plus;暴力枚举)(2009 Asia Ningbo Regional)

    Description On the evening of 3 August 1492, Christopher Columbus departed from Palos de la Frontera ...

  10. HDU 6170 Two strings (dp)

    /** * 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6170 * 字符串match, '.'代表匹配任意一个字符,"*" 代表 ...