golang: http client 之间的 pk(gout vs resty)

2019-10-24 09:05:56 +08:00
 guonaihong

今天是 1024 节,娱乐一把。一位是小鲜肉(gout),一位是成熟老男人(resty)。来个 golang http client 之间的较量。

环境

服务端地址 : 127.0.0.1:8080

设置查询字符串-query

resty

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 不支持
}

gout

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

设置 json body

resty

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

gout

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。

github 地址

https://github.com/guonaihong/gout

2796 次点击
所在节点    Go 编程语言
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/612339

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX