内容简介: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发起中间人攻击
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据结构与算法分析
韦斯 (Mark Allen Weiss) / 机械工业出版社 / 2009-1-1 / 55.00元
本书是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。 随着计算机速度的不断增加和功能的日益强大,人们对有效编程和算法分析的要求也不断增长。本书把算法分析与最有效率的Java程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。一起来看看 《数据结构与算法分析》 这本书的介绍吧!