Golang Go语言中 http client 之间的 pk(gout vs resty)
Golang Go语言中 http client 之间的 pk(gout vs resty)
引
今天是 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 地址
更多关于Golang Go语言中 http client 之间的 pk(gout vs resty)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于Golang Go语言中 http client 之间的 pk(gout vs resty)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Golang中,选择适合的HTTP客户端库对于提升开发效率和代码质量至关重要。针对gout
和resty
这两个流行的HTTP客户端库,我们可以从以下几个方面进行对比:
-
易用性与功能:
gout
:设计简洁,易于上手,适合快速构建HTTP请求。它提供了直观的链式调用方式,便于设置请求参数和头信息。resty
:功能丰富,支持更多高级特性,如请求重试、超时控制、自动解析JSON响应等。对于需要复杂HTTP交互的场景,resty
可能更具优势。
-
性能:
- 两者在性能上的差异通常不大,选择时更应考虑具体使用场景下的需求。
resty
由于功能更全面,可能在某些情况下会引入额外的开销,但通常这种差异对大多数应用来说是可以接受的。
- 两者在性能上的差异通常不大,选择时更应考虑具体使用场景下的需求。
-
社区与文档:
resty
:拥有更广泛的用户基础和活跃的社区支持,文档详尽,易于查找解决方案。gout
:虽然社区规模相对较小,但文档清晰,学习曲线平缓。
综上所述,选择gout
还是resty
主要取决于你的具体需求。如果你需要一个轻量级、易用的HTTP客户端,gout
是一个不错的选择。而如果你需要更多高级功能和更广泛的社区支持,resty
可能更适合你。在做出决定前,建议查阅两者的官方文档并尝试在项目中实际应用,以找到最适合你的工具。