zoukankan      html  css  js  c++  java
  • 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, "
    ", 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]}]
    
    */
    

      

  • 相关阅读:
    C. MP3(离散化 暴力)
    最大团、最小独立集
    欧拉函数
    In Touch(dijk+并查集优化)
    Path(2019 杭电多校第一场 ) hdu 6582(最短路模板+dinic模板)
    2019 南昌邀请赛 Winner (tarjan缩点)
    mybatis主键回填和自定义
    mybatis配置xml文件的层次结构
    Paratroopers
    Dual Core CPU
  • 原文地址:https://www.cnblogs.com/peterinblog/p/7874109.html
Copyright © 2011-2022 走看看