Go语言的HTTP请求包,功能特性:
- 线程安全
- 链式语法
- 支持
GET
,POST
,PUT
,PATCH
,HEAD
,DELETE
,OPTIONS
,TRACE
方法 - 可按间隔时间和最大次数自动重发请求
- 可定义多个URL轮循请求,当请求失败时自动使用下一个URL重发请求
- 对响应数据进行类型转换
github.com/dxvgef/go-httprequest
v0.0.9
package main
import (
"log"
"github.com/dxvgef/go-httprequest"
)
func main() {
// 使用默认配置创建请求实例,可传入httprequest.Config{}来自定义配置
request := httprequest.New()
resp := request.AddHeader("test", "ok"). // 添加Header参数
AddEndpoint("http://localhost/"). // 添加端点
GET() // 执行GET请求
// 判断请求过程是否出错
if resp.Error() != nil {
log.Println(err)
return
}
// 响应状态码
log.Println(resp.StatusCode())
// 将响应数据转为string
str, err := resp.String()
}
如果执行httprequest.New()
时不传入参数,则自动使用默认配置。
默认配置及具体参数说明如下:
var DefaultConfig = Config{
// 每次请求的超时时间(秒)
Timeout: 10,
// 触发重试的响应状态码
RetryStatus: []int{500, 502, 503, 504, 506, 507},
// 每个端点的重试次数
RetryCount: 1,
// 每个端点的重试间隔时间(毫秒)
RetryInterval: 1000,
}
AddEndpoint(string)
添加一个目标端点URLSetEndpoint([])
设置目标端点URLAddHeader(string, string)
添加一个头部参数SetHeader(map[string]string)
设置头部参数AddValue(string, string)
添加一个请求参数SetValue(url.Values)
设置请求参数SetBody([]body)
设置请求正文数据SetJSON(interface{})
将入参变量进行JSON
编码并做为请求正文数据SetXML(interface{})
将入参变量进行XML
编码并做为请求正文数据GET()
发送GET
方法的请求POST()
发送POST
方法的请求PUT()
发送PUT
方法的请求PATCH()
发送PATCH
方法的请求DELETE()
发送DELETE
方法的请求OPTIONS()
发送OPTIONS
方法的请求HEAD()
发送HEAD
方法的请求TRACE()
发送TRACE
方法的请求Error() error
获取请求过程中的错误
Error()
获取请求过程中的错误Raw()
获取*http.Response
Bytes() ([]byte, error)
将响应的正文数据转为[]byte
类型String() (string, error)
将响应的正文数据转为string
类型ParseQuery() (url.Values, error)
将响应的正文数据按查询参数格式解析到net.Values
类型的变量UnmarshalJSON(interface{}) error
将响应的正文数据进行JSON
解析到入参变量UnmarshalXML(interface{}) error
将响应的正文数据进行XML
解析到入参变量