Skip to content

HTTP request package for Go language, multiple end-point round-robin retry features

Notifications You must be signed in to change notification settings

dxvgef/go-httprequest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-httprequest

简介

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.Config参数配置

如果执行httprequest.New()时不传入参数,则自动使用默认配置。

默认配置及具体参数说明如下:

var DefaultConfig = Config{
    // 每次请求的超时时间(秒)
    Timeout:       10,
    // 触发重试的响应状态码
    RetryStatus:   []int{500, 502, 503, 504, 506, 507},
    // 每个端点的重试次数
    RetryCount:    1,
    // 每个端点的重试间隔时间(毫秒)
    RetryInterval: 1000,
}

httprequest.Request请求

  • AddEndpoint(string) 添加一个目标端点URL
  • SetEndpoint([]) 设置目标端点URL
  • AddHeader(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 获取请求过程中的错误

httprequest.Response响应

  • 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解析到入参变量

About

HTTP request package for Go language, multiple end-point round-robin retry features

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages