golang API
1.server端程序
package main //简单的JSON Restful API演示(服务端)
//author: Xiong Chuan Liang
//date: 2015-2-28 import (
"encoding/json"
"fmt"
"net/http"
"time"
) type Item struct {
Seq int
Result map[string]int
} type Message struct {
Dept string
Subject string
Time int64
Detail []Item
} func getJson() ([]byte, error) {
pass := make(map[string]int)
pass["x"] = 50
pass["c"] = 60
item1 := Item{100, pass} reject := make(map[string]int)
reject["l"] = 11
reject["d"] = 20
item2 := Item{200, reject} detail := []Item{item1, item2}
m := Message{"IT", "KPI", time.Now().Unix(), detail}
return json.MarshalIndent(m, "", "")
} func handler(w http.ResponseWriter, r *http.Request) {
resp, err := getJson()
if err != nil {
panic(err)
}
fmt.Fprintf(w, string(resp))
} func main() {
http.HandleFunc("/", handler)
http.ListenAndServe("localhost:8085", nil)
}
2.client端程序
package main //简单的JSON Restful API演示(调用端)
//author: Xiong Chuan Liang
//date: 2015-2-28 import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"time"
) type Item struct {
Seq int
Result map[string]int
} type Message struct {
Dept string
Subject string
Time int64
Detail []Item
} func main() {
url := "http://localhost:8085"
ret, err := http.Get(url) if err != nil {
panic(err)
}
defer ret.Body.Close() body, err := ioutil.ReadAll(ret.Body)
if err != nil {
panic(err)
} var msg Message
err = json.Unmarshal(body, &msg)
if err != nil {
panic(err)
} strTime := time.Unix(msg.Time, 0).Format("2006-01-02 15:04:05")
fmt.Println("Dept:", msg.Dept)
fmt.Println("Subject:", msg.Subject)
fmt.Println("Time:", strTime, "\n", msg.Detail)
} /*
//运行结果: Dept: IT
Subject: KPI
Time: 2015-02-28 16:43:11
[{100 map[c:60 x:50]} {200 map[d:20 l:11]}] */
golang API的更多相关文章
- golang API 例子实现
golang API 例子实现 http://files.cnblogs.com/files/rojas/astaxie.zip
- golang API 请求队列
概要 实现思路 使用方法 启动队列服务 使用队列服务 概要 在调用第三方 API 的时候, 基本都有访问限速的限制条件. 第三方的 API 有多个的时候, 就不太好控制访问速度, 常常会导致 HTTP ...
- golang gin框架 使用swagger生成api文档
github地址:https://github.com/swaggo/gin-swagger 1.下载swag $ go get -u github.com/swaggo/swag/cmd/swag ...
- Golang优秀开源项目汇总, 10大流行Go语言开源项目, golang 开源项目全集(golang/go/wiki/Projects), GitHub上优秀的Go开源项目
Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open- ...
- 基于consul构建golang系统分布式服务发现机制
原文地址-石匠的Blog: http://www.bugclosed.com/post/5 在分布式架构中,服务治理是一个重要的问题.在没有服务治理的分布式集群中,各个服务之间通过手工或者配置的方式进 ...
- Go gin框架 使用swagger生成API文档
swaggos 是一个golang版本的swagger文档生成器,提供了native code包装器,并且支持主流的web框架包裹器 github 地址:https://github.com/swag ...
- 一款不错的 Go Server/API boilerplate,使用 K8S+DDD+CQRS+ES+gRPC 最佳实践构建
Golang API Starter Kit 该项目的主要目的是使用最佳实践.DDD.CQRS.ES.gRPC 提供样板项目设置. 为开发和生产环境提供 kubernetes 配置.允许与反映生产的 ...
- HTML5 直播协议之 WebSocket 和 MSE
当前为了满足比较火热的移动 Web 端直播需求, 一系列的 HTML5 直播技术迅速的发展了起来. 常见的可用于 HTML5 的直播技术有 HLS, WebSocket 与 WebRTC. 今天我要向 ...
- WebSocket+MSE——HTML5 直播技术解析
作者 | 刘博(又拍云多媒体开发工程师) 当前为了满足比较火热的移动 Web 端直播需求,一系列的 HTML5 直播技术迅速的发展起来. 常见的可用于 HTML5 的直播技术有 HLS.WebSock ...
随机推荐
- Mac sublime安装package controller
https://packagecontrol.io/installation#st2 链接被墙了这个. 我拿来放在这里. The simplest method of installation is ...
- p2p传输协议
老司机是如何飙车的——P2P传输协议 转载来自2017-03-27 15:23 点波蓝字关注变智者 秋明山上人行稀,常有车手较高低,如今车道依旧在,不见当年老司机.其实老司机们从未离去,只不过好的车手 ...
- iOS即时通讯之CocoaAsyncSocket源码解析二
原文 前言 本文承接上文:iOS即时通讯之CocoaAsyncSocket源码解析一 上文我们提到了GCDAsyncSocket的初始化,以及最终connect之前的准备工作,包括一些错误检查:本机地 ...
- 几个FFmpeg 视频参数 fps、tbr、tbn、tbc
我们用Ffplay播放文件或者视频流命令行会出现fps.tbr.tbn.tbc等参数如下图所示 图1 ffplay 播放文件示意图 fps表示平均帧率,总帧数除以总时长(以s为单位). tbr 表示 ...
- ceph-pve英语
adapted accordingly并相应地调整 silosn. 筒仓:粮仓:贮仓(silo的复数) saturatevt. 浸透,使湿透:使饱和,使充满While one HDD might no ...
- Linux_LDAP+NFS+autofs
目录 目录 前言 Ldap LDAPNFSautofs ServerPost 前言 LDAP+NFS+Autofs也是一种网络用户集中管理解决方案,相对于NIS+NFS+Autofs而言,有着更可靠的 ...
- delphi中如何实现文件的复制?
http://zhidao.baidu.com/link?url=nyAzCpeXAbaT8M3qqAePCF1Zr7q-oK4hpAUNIaRYpHcbmIwYsLr1TXoTt8759HtR1EB ...
- Java ——日期时间 日期时间相关类 随机数 定义类属性时建议使用引用数据类型
本节重点思维导图 Date对象创建 两个构造函数: Date() ----使用当前日期和时间来初始化对象 Date(long millisec) -----接收一个参数,该参数是从1970年1月1日起 ...
- 【BASIS系列】SAP 批量锁住用户和TCODE的方法
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BASIS系列]SAP 批量锁住用户和TCOD ...
- mysql恢复备份导出
MySQL-5.7 备份与恢复 一.备份分类 按介质分类: 物理备份指通过拷贝数据库文件方式完成备份,适用于数据库很大,数据重要且需要快速恢复的数据库. 逻辑备份指通过备份数据库的逻辑结构和数据内 ...