今天是 1024 节,娱乐一把。一位是小鲜肉(gout),一位是成熟老男人(resty)。来个 golang http client 之间的较量。
服务端地址 : 127.0.0.1:8080
func restyQuery() {
client := resty.New()
// string
_, err := client.R().SetQueryString("k1=v1&k2=v2").Post("http://127.0.0.1:8080/json")
fmt.Printf("err = %v\n", err)
// slice or array
_, err = client.R().SetQueryParams(map[string]string{"k1": "v1", "k2": "v2"}).Post("http://127.0.0.1:8080/json")
fmt.Printf("err = %v\n", err)
// map
_, err = client.R().SetQueryParams(map[string]string{"k1": "v1", "k2": "v2"}).Post("http://127.0.0.1:8080/json")
fmt.Printf("err = %v\n", err)
// struct 不支持
}
func goutQuery() {
// string
err := gout.GET(":8080/query").SetQuery("k1=v1&k2=v2").Do()
fmt.Printf("err = %v\n", err)
// slice or array
err = gout.GET(":8080/query").SetQuery([]string{"k1", "v1", "k2", "v2"}).Do()
fmt.Printf("err = %v\n", err)
// map
err = gout.GET(":8080/query").SetQuery(gout.H{"k1": "v1", "k2": "v2"}).Do()
fmt.Printf("err = %v\n", err)
// struct
err = gout.GET(":8080/query").SetQuery(testData{K1: "v1", K2: "v2"}).Do()
fmt.Printf("err = %v\n", err)
}
func restyJSON() {
r := testJSON{}
client := resty.New()
resp, err := client.R().SetBody(map[string]interface{}{"key": "val"}).SetResult(&r).Post("http://127.0.0.1:8080/json")
fmt.Printf("err = %v:result%v, resp = %v\n", err, r, resp)
}
func goutJSON() {
r := testJSON{}
err := gout.POST(":8080/json").SetJSON(gout.H{"key": "val"}).BindJSON(&r).Do()
fmt.Printf("err = %v:result%v\n", err, r)
}
单从代码行数来说,小鲜肉 gout 完胜。
大家对 gout 还有什么期待,可以发 issue。