gout v0.0.8版本发布,http client里的瑞士军刀!!!
简介
gout 是http client请求库领域的瑞士军刀,小巧,强大,犀利
项目地址
构架图
功能列表
- GET/PUT/DELETE/PATH/HEAD/OPTIONS
- 支持设置请求 http header(可传 struct,map,array,slice 等类型)
- 支持设置 URL query(可传 struct,map,array,slice,string 等类型)
- 支持设置 json 编码到请求 body 里面(可传struct, map, string, []byte 等类型)
- 支持设置 xml 编码到请求 body 里面(可传struct, string, []byte 等类型)
- 支持设置 yaml 编码到请求 body 里面(可传struct, map, string, []byte 等类型)
- 支持设置 form-data(可传 struct, map, array, slice 等类型)
- 支持设置 x-www-form-urlencoded(可传 struct,map,array,slice 等类型)
- 支持设置 io.Reader,uint/uint8/uint16...int/int8...string...[]byte...float32,float64 至请求 body 里面
- 支持解析响应body里面的json,xml,yaml至结构体里(BindJSON/BindXML/BindYAML)
- 支持解析响应body的内容至io.Writer, uint/uint8...int/int8...string...[]byte...float32,float64
- 支持解析响应header至结构体里
- 支持接口性能benchmark,可控制压测一定次数还是时间,可控制压测频率
- 支持retry-backoff,可以指定重试条件
- 支持发送裸http数据包
- 支持导出curl命令
v0.0.8版本 changlog
issue: #166 增强retry过滤器--支持回调函数(pr #178 )
issue: #164 打磨SetJSON函数(pr #167)
issue: #168 新增Filter和Export函数简写形式(pr #169)
issue: #170 打磨SetJSON函数(pr #171 )
issue: #174 支持socks5代理(pr #177 )
issue: #172 更新构架图新增import和export v0.0.8(pr #173 )
issue: #175 修改SetYAML接口,支持string,[]byte类型(pr #176 )
用法小贴士
下面的是backoff算法指定条件重新访问接口的例子,对backoff算法感兴趣的可看backoff
该算法可以让系统崩溃恢复的那一瞬间的重试请求变少,减轻压力,提高系统可用性。
package main
import (
"fmt"
"github.com/guonaihong/gout"
"github.com/guonaihong/gout/core"
"github.com/guonaihong/gout/filter"
"time"
)
func useRetryFunc() {
// 获取一个没有服务绑定的端口
// 这里可以是热备服务地址,使用一个不存在的地址,模拟热备地址访问失败
port := core.GetNoPortExists()
s := ""
err := gout.GET(":" + port).Debug(true).BindBody(&s).F().
Retry().Attempt(3).WaitTime(time.Millisecond * 10).MaxWaitTime(time.Millisecond * 50).
Func(func(c *gout.Context) error {
if c.Error != nil {
c.SetHost(":1234") //必须是存在的端口,这时可以是backup(冷备)的服务地址
return filter.ErrRetry
}
return nil
}).Do()
fmt.Printf("err = %v\n", err)
}
共 1 个回复
lililala6868
golang流式北京快3http client gout v0.0.3版本发布
changlog
#78 debug上海快3模式下-支持json语法高亮
#84 支持x-www-form-urlencoded
#82 新增福彩3Dexample目录,存放使用示例
#83 SetForm支持更多数据类型
#81 代码测试覆盖度到底90%