内容简介:API 文档地址:
goz 是一个用于在 Go 代码中快速发起HTTP请求的开源库, 部分实现参考了 PHP 流行请求库: guzzle
安装
go get -u github.com/idoubi/goz 复制代码
文档
API 文档地址: godoc.org/github.com/…
基本使用
package main
import (
"github.com/idoubi/goz"
)
func main() {
cli := goz.NewClient()
resp, err := cli.Get("http://127.0.0.1:8091/get")
if err != nil {
log.Fatalln(err)
}
fmt.Printf("%T", resp)
// Output: *goz.Response
}
复制代码
查询参数
- map形式
cli := goz.NewClient()
resp, err := cli.Get("http://127.0.0.1:8091/get-with-query", goz.Options{
Query: map[string]interface{}{
"key1": "value1",
"key2": []string{"value21", "value22"},
"key3": "333",
},
})
if err != nil {
log.Fatalln(err)
}
fmt.Printf("%s", resp.GetRequest().URL.RawQuery)
// Output: key1=value1&key2=value21&key2=value22&key3=333
复制代码
- 字符串形式
cli := goz.NewClient()
resp, err := cli.Get("http://127.0.0.1:8091/get-with-query?key0=value0", goz.Options{
Query: "key1=value1&key2=value21&key2=value22&key3=333",
})
if err != nil {
log.Fatalln(err)
}
fmt.Printf("%s", resp.GetRequest().URL.RawQuery)
// Output: key1=value1&key2=value21&key2=value22&key3=333
复制代码
提交数据
- form表单
cli := goz.NewClient()
resp, err := cli.Post("http://127.0.0.1:8091/post-with-form-params", goz.Options{
Headers: map[string]interface{}{
"Content-Type": "application/x-www-form-urlencoded",
},
FormParams: map[string]interface{}{
"key1": "value1",
"key2": []string{"value21", "value22"},
"key3": "333",
},
})
if err != nil {
log.Fatalln(err)
}
body, _ := resp.GetBody()
fmt.Println(body)
// Output: form params:{"key1":["value1"],"key2":["value21","value22"],"key3":["333"]}
复制代码
- json数据
cli := goz.NewClient()
resp, err := cli.Post("http://127.0.0.1:8091/post-with-json", goz.Options{
Headers: map[string]interface{}{
"Content-Type": "application/json",
},
JSON: struct {
Key1 string `json:"key1"`
Key2 []string `json:"key2"`
Key3 int `json:"key3"`
}{"value1", []string{"value21", "value22"}, 333},
})
if err != nil {
log.Fatalln(err)
}
body, _ := resp.GetBody()
fmt.Println(body)
// Output: json:{"key1":"value1","key2":["value21","value22"],"key3":333}
复制代码
请求头
cli := goz.NewClient()
resp, err := cli.Post("http://127.0.0.1:8091/post-with-headers", goz.Options{
Headers: map[string]interface{}{
"User-Agent": "testing/1.0",
"Accept": "application/json",
"X-Foo": []string{"Bar", "Baz"},
},
})
if err != nil {
log.Fatalln(err)
}
headers := resp.GetRequest().Header["X-Foo"]
fmt.Println(headers)
// Output: [Bar Baz]
复制代码
响应
cli := goz.NewClient()
resp, err := cli.Get("http://127.0.0.1:8091/get")
if err != nil {
log.Fatalln(err)
}
body, err := resp.GetBody()
if err != nil {
log.Fatalln(err)
}
fmt.Printf("%T", body)
// Output: goz.ResponseBody
part := body.Read(30)
fmt.Printf("%T", part)
// Output: []uint8
contents := body.GetContents()
fmt.Printf("%T", contents)
// Output: string
fmt.Println(resp.GetStatusCode())
// Output: 200
fmt.Println(resp.GetReasonPhrase())
// Output: OK
headers := resp.GetHeaders()
fmt.Printf("%T", headers)
// Output: map[string][]string
flag := resp.HasHeader("Content-Type")
fmt.Printf("%T", flag)
// Output: bool
header := resp.GetHeader("content-type")
fmt.Printf("%T", header)
// Output: []string
headerLine := resp.GetHeaderLine("content-type")
fmt.Printf("%T", headerLine)
// Output: string
复制代码
代理
cli := goz.NewClient()
resp, err := cli.Get("https://www.fbisb.com/ip.php", goz.Options{
Timeout: 5.0,
Proxy: "http://127.0.0.1:1087",
})
if err != nil {
log.Fatalln(err)
}
fmt.Println(resp.GetStatusCode())
// Output: 200
复制代码
超时
cli := goz.NewClient(goz.Options{
Timeout: 0.9,
})
resp, err := cli.Get("http://127.0.0.1:8091/get-timeout")
if err != nil {
if resp.IsTimeout() {
fmt.Println("timeout")
// Output: timeout
return
}
}
fmt.Println("not timeout")
复制代码
项目信息
-
开源协议: MIT
-
Copyright (c) 2017-present, idoubi
-
项目主页: github.com/idoubi/goz
-
作者博客: idoubi.cc
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mobilizing Web Sites
Layon, Kristofer / 2011-12 / 266.00元
Everyone has been talking about the mobile web in recent years, and more of us are browsing the web on smartphones and similar devices than ever before. But most of what we are viewing has not yet bee......一起来看看 《Mobilizing Web Sites》 这本书的介绍吧!