内容简介: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发起中间人攻击
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web协议与实践
克里希纳穆尔蒂 (KrishnamurthyBalachander) / 范群波 / 科学出版社 / 2003-7 / 46.0
本书全面论述了传输Web内容的系统和协议,重点讲述了Web中业已成熟和稳定的技术,如TCP/IP协议及DNS技术、HITP/1.0的设计及其与TCP之间的交互;深入阐述了Web高速缓存技术和多媒体流播技术的最新技术动态;分析了Apache Web服务器和Squid代理;还探讨了通信量的分析和测量技术。书中使用了大量示例、技术发展水平报告以及案例分析来阐述Web的工作原理和各个组件之间的交互。本书是......一起来看看 《Web协议与实践》 这本书的介绍吧!