• 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]}]
    
    */
    

      

  • 相关阅读:
    jmeter录制rabbitmq消息-性能测试
    plsqll连接Oracle的两种方式
    Badboy录制脚本时,提示脚本错误的解决方法
    Decorator
    PyObject and PyTypeObject
    Python LEGB (Local, Enclosing, Global, Build in) 规则
    Python Namespace
    Method Resolve Order (MRO)
    Source Code Structure
    Bound Method and Unbound Method
  • 原文地址:https://www.cnblogs.com/peterinblog/p/7874109.html
Copyright © 2020-2023  润新知