内容简介: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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Apache Eagle联合发起人陈浩:如何发起和维护开源项目
- 虚谷计划:中国老师发起自己的开源硬件
- Debian 项目负责人发起“Redis 模块开源与免费计划”
- Debian项目负责人发起“Redis 模块开源与免费计划”
- 计划发起一个练习算法项目
- 无视HTTPS发起中间人攻击
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Perl最佳实践
康韦 / Taiwan公司 / 东南大学出版社 / 2008-3 / 78.00元
《Perl最佳实践》中所有的规则都是为了写出清晰、健壮、高效、可维护和简洁的程序而设计。Conway博士并不自诩这些规则是最广泛和最清晰的实践集,但实际上,《Perl最佳实践》确实提供了在实践中被广泛认可和应用的建议,而不是象牙塔似的编程理论。许多程序员凭直觉来编程,这些直觉来自于他们早期养成的习惯和风格。这样写出的程序似乎自然、直观,而且看起来也很不错。但是,如果你想严肃地对待程序员这份职业,那......一起来看看 《Perl最佳实践》 这本书的介绍吧!
URL 编码/解码
URL 编码/解码
Markdown 在线编辑器
Markdown 在线编辑器