简单的Restful API例子(Golang)

RESTful API 这玩意不用多说了,用Go做了个很简单的例子:

服务端在被调用时返回JSON,

客户端解析得到相关JSON信息.

服务端源码:

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)
}

服务端源码运行后,可在浏览器中执行看下效果:

说明返回是正常的。再用Go写个调用程序测试下:

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]}]

*/

从运行结果中可以看到,已正确得到相关JSON信息。

MAIL: [email protected]

BLOG: http://blog.csdn.net/xcl168

时间: 2024-10-12 20:26:45

简单的Restful API例子(Golang)的相关文章

Go实战--通过gin-gonic框架搭建restful api服务(github.com/gin-gonic/gin)

生命不止,继续 go go go !!! 先插播一条广告,给你坚持学习golang的理由: <2017 软件开发薪酬调查:Go 和 Scala 是最赚钱的语言> 言归正传! 之前写过使用golang实现简单的restful api相关的博客: Go实战–实现简单的restful api(The way to go) 其中,使用了github.com/gorilla/mux,今天要跟大家介绍的是gin-gonic/gin. gin-gonic/gin 介绍: Gin is a HTTP web

用expressjs写RESTful API

expressjs expressjs是一个基于nodejs的web开发框架:http://expressjs.com/,这篇博客目的就是用expressjs写一个关于products的最简单的RESTful API 一个最简单express的例子 package.json { "name": "hello-world", "description": "hello world of express js", "ve

Yii2框架RESTful API教程(一) - 快速入门

前不久做一个项目,是用Yii2框架写一套RESTful风格的API,就去查了下<Yii 2.0 权威指南 >,发现上面写得比较简略.所以就在这里写一篇教程贴,希望帮助刚接触Yii2框架RESTful的小伙伴快速入门. 一.目录结构 实现一个简单地RESTful API只需用到三个文件.目录如下: frontend ├─ config │ └ main.php ├─ controllers │ └ BookController.php └─ models └ Book.php 二.配置URL规则

在Ubuntu上快速搭建基于Beego的RESTful API

最近在研究Go,打算基于Go做点Web API,于是经过初步调研,打算用Beego这个框架,然后再结合其中提供的ORM以及Swagger的集成,可以快速搭建一个RESTful API的网站. 下面是具体做法: 1. 在Ubuntu中安装Go 1.8 默认Ubuntu apt-get提供的是Go 1.6,而我们要用最新的Go 1.8需要执行以下操作: 1.1 添加apt-get源并刷新 $ sudo add-apt-repository ppa:gophers/archive $ sudo apt

Yii2框架RESTful API教程

前不久做一个项目,是用Yii2框架写一套RESTful风格的API,就去查了下<Yii 2.0 权威指南 >,发现上面写得比较简略.所以就在这里写一篇教程贴,希望帮助刚接触Yii2框架RESTful的小伙伴快速入门. 一.目录结构 实现一个简单地RESTful API只需用到三个文件.目录如下: frontend ├─ config │ └ main.php ├─ controllers │ └ BookController.php └─ models └ Book.php 二.配置URL规则

拿nodejs快速搭建简单Oauth认证和restful API server攻略

拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最近一直在鼓捣这个东西,拿出来分享下一下经验吧,其实很简单,一点也不难. 首先需求是这样,给自己的网站要增加API服务,API分为两种,公共的和私有授权的,授权的使用Oauth方法认证身份,API格式均为JOSN和JSONP. 嗯,别的语言我也没怎么学过,首先是找合适的框架进行实现吧.本身网站使用的e

实现简单Restful API

1. 首选我们通过 http://start.spring.io/ 网址生成一个基础spring boot 项目,截图配置如下: 点击 generate Project 按钮生成并下载基础项目 2. 将下载的项目导入到 Intellij Idea 中,截图如下: Intellij Idea 会自动添加maven依赖 3. 创建 HelloController.java 控制器类 package com.net263; import org.springframework.web.bind.ann

利用 Django REST framework 编写 RESTful API

利用 Django REST framework 编写 RESTful API Updateat 2015/12/3: 增加 filter 最近在玩 Django,不得不说 rest_framework 真乃一大神器,可以轻易的甚至自动化的搞定很多事情,比如: 自动生成符合 RESTful 规范的 API 支持 OPTION.HEAD.POST.GET.PATCH.PUT.DELETE 根据 Content-Type 来动态的返回数据类型(如 text.json) 生成 browserable

flask开发restful api

在此之前,向大家说明的是,我们整个框架用的是flask + sqlalchemy + redis.如果没有开发过web,还是先去学习一下,这边只是介绍如果从开发web转换到开发移动端.如果flask还不是很熟悉,我建议先到这个网站简单学习一下,非常非常简单.http://dormousehole.readthedocs.org/en/latest/ 一直想写一些特别的东西,能让大家学习讨论的东西.但目前网上的很多博客,老么就按照官方文档照本宣读,要么直接搬代码,什么都不说明.我写这个系列的博客,