gout v0.0.8版本发布,http client里的瑞士军刀!!!

简介

gout 是http client请求库领域的瑞士军刀,小巧,强大,犀利

项目地址

github地址

构架图

gout-ad.png

功能列表

  • 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%

# 0