Skip to content

Releases: guonaihong/gout

v0.3.10版本

15 Jul 03:11
Compare
Choose a tag to compare
  1. 优化decode ReadAll性能 #384 @asjdf
  2. 修复变量单词拼写 #382 @garudaen
  3. socks5支持用户名和密码 #387
  4. 修复golangci-lint 99%+的错误 #388

v0.3.9版本

17 Dec 07:40
8af3617
Compare
Choose a tag to compare
  1. debug模块的trace信息可以输出的io.Writer里面
  2. 可以自定义content-type替换框架里面的设置 @simpleapples

v0.3.8

13 Jul 14:57
9ad575c
Compare
Choose a tag to compare

在NewWithOpt 加上WithSocks5, WithProxy, WithUnixSocket三个函数。

new with opt unix socket

gout.WithUnixSocket 为了让大家少用.UnixSocket 而设计

import (
	"github.com/guonaihong/gout"
)

func main() {
	// globalWithOpt里面包含连接池, 这是一个全局可复用的对象, 一个进程里面可能只需创建1个, 如果有多个不同的unixsocket,可以创建多个
	globalWithOpt := gout.NewWithOpt(gout.WithUnixSocket("/tmp/test.socket"))
	err := globalWithOpt.GET("url").Do()
	if err != nil {
		fmt.Printf("err = %v\n" ,err)
		return
	}
}

new with opt proxy

gout.WithProxy 为了让大家少用.SetProxy 而设计

import (
	"github.com/guonaihong/gout"
)

func main() {
	// globalWithOpt里面包含连接池, 这是一个全局可复用的对象, 一个进程里面可能只需创建1个, 如果有多个不同的proxy,可以创建多个
	globalWithOpt := gout.NewWithOpt(gout.WithProxy("http://127.0.0.1:7000"))
	err := globalWithOpt.GET("url").Do()
	if err != nil {
		fmt.Printf("err = %v\n" ,err)
		return
	}
}

new with opt socks5

gout.WithSocks5 为了让大家少用.SetSOCKS5而设计

import (
	"github.com/guonaihong/gout"
)

func main() {
	// globalWithOpt里面包含连接池, 这是一个全局可复用的对象, 一个进程里面可能只需创建1个, 如果有多个不同的socks5,可以创建多个
	globalWithOpt := gout.NewWithOpt(gout.WithSocks5("127.0.0.1:7000"))
	err := globalWithOpt.GET("url").Do()
	if err != nil {
		fmt.Printf("err = %v\n" ,err)
		return
	}
}

v0.3.7版本

06 Mar 14:53
0d99a2c
Compare
Choose a tag to compare

来源 #361
新加SetHeaderRaw接口

与SetHeader API唯一的区别就是不修改header名. 大部分情况用SetHeader,如果有不修改header的需求再使用SetHeaderRaw。

package main

import (
    "fmt"
    "github.com/guonaihong/gout"
    "time"
)

func main() {
    err := gout.
        //设置GET请求和url,:8080/test.header是127.0.0.1:8080/test.header的简写
        GET(":8080/test.header").
        //设置debug模式
        Debug(true).
        //设置请求http header
        SetHeaderRaw(gout.H{
            "h1": "v1",
            "h2": 2,
            "h3": float32(3.14),
            "h4": 4.56,
            "h5": time.Now().Unix(),
            "h6": time.Now().UnixNano(),
            "h7": time.Now().Format("2006-01-02")}).
        Do()
    if err != nil {
        fmt.Printf("%s\n", err)
        return
    }

}

/*
> GET /test.header HTTP/1.1
> h2: 2
> h3: 3.14
> h4: 4.56
> h5: 1574081686
> h6: 1574081686471347098
> h7: 2019-11-18
> h1: v1
>


< HTTP/1.1 200 OK
< Content-Length: 0
*/

v0.3.6

01 Feb 15:10
df740c1
Compare
Choose a tag to compare

感谢 @panxl6 (可根据编译tag选择多种json序列化库)

v0.3.5版本

30 Jan 06:16
78be976
Compare
Choose a tag to compare

url 支持模板语法bug修复

v0.3.4

18 Jan 06:18
13ff215
Compare
Choose a tag to compare

url 支持模板语法。

package main

import (
	"github.com/guonaihong/gout"
)

type testURLTemplateCase struct {
	Host   string
}

func main() {

	url := "https://{{.Host}}"
	// 发送GET方法
	gout.GET(url, testURLTemplateCase{Host:"www.qq.com"}).Do()

	// 发送POST方法
	gout.POST(url, testURLTemplateCase{Host:"www.github.com"}).Do()

	// 发送PUT方法
	gout.PUT(url, testURLTemplateCase{Host:"www.baidu.com"}).Do()

	// 发送DELETE方法
	gout.DELETE(url, testURLTemplateCase{Host:"www.google.com"}).Do()

	// 发送PATH方法
	gout.PATCH(url, testURLTemplateCase{Host:"www.google.com"}).Do()

	// 发送HEAD方法
	gout.HEAD(url, testURLTemplateCase{Host:"www.google.com"}).Do()

	// 发送OPTIONS
	gout.OPTIONS(url, testURLTemplateCase{Host:"www.google.com"}).Do()
}

v0.3.3版本

18 Dec 14:38
faf5d11
Compare
Choose a tag to compare

新加SetJSONNotEscape接口,不转义json中的HTML字符

v0.3.2版本

10 Dec 15:00
cc27f1a
Compare
Choose a tag to compare

#343
新加解码压缩数据包的接口

AutoDecodeBody()

只要Content-Encoding是deflate, br。都可以还原成压缩之前的格式。

Content-Encoding: deflate
Content-Encoding: br

v0.3.1版本

23 Jul 14:20
Compare
Choose a tag to compare

来源,#338

  1. 全局SetDebug
package main

import (
	"fmt"

	"github.com/guonaihong/gout"
)

func main() {
	gout.SetDebug(true)
	err := gout.GET(":8080/colorjson").Do()
	if err != nil {
		fmt.Printf("err is:%v\n")
	}
}
  1. 请求保存到文件里面
import (
	"github.com/guonaihong/gout"
	"github.com/guonaihong/gout/debug"
)
func main() {
	
	err := gout.POST(":8080/colorjson").
		Debug(debug.ToFile("./req.txt", false)).
		SetJSON(gout.H{"str": "foo",
			"num":   100,
			"bool":  false,
			"null":  nil,
			"array": gout.A{"foo", "bar", "baz"},
			"obj":   gout.H{"a": 1, "b": 2},
		}).Do()

	if err != nil {
		fmt.Printf("err = %v\n", err)
	}
}
  1. 请求保存到io.Writer里面, bytes.Buffer, 文件都可存放
package main

import (
	"bytes"
	"fmt"

	"github.com/guonaihong/gout"
	"github.com/guonaihong/gout/debug"
)

func main() {
	var buf bytes.Buffer
	err := gout.POST(":8080/colorjson").
		Debug(debug.ToWriter(&buf, false)).
		SetJSON(gout.H{"str": "foo",
			"num":   100,
			"bool":  false,
			"null":  nil,
			"array": gout.A{"foo", "bar", "baz"},
			"obj":   gout.H{"a": 1, "b": 2},
		}).Do()

	if err != nil {
		fmt.Printf("err = %v\n", err)
	}
	fmt.Println(buf.String())
}