gorequest

package module
v1.0.83 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 31, 2024 License: MIT Imports: 31 Imported by: 35

Documentation

Index

Constants

View Source
const Version = "1.0.83"

Variables

View Source
var (
	XRequestID = "X-Request-ID"
	TNil       = "%!s(<nil>)"
)
View Source
var (
	TraceID = "trace-Id"
)

Functions

func ClientIp

func ClientIp(r *http.Request) string

ClientIp 尽最大努力实现获取客户端 IP 的算法。 解析 X-Real-IP 和 X-Forwarded-For 以便于反向代理(nginx 或 haproxy)可以正常工作。

func DeCode

func DeCode(s string) string

DeCode 解码

func GetCmdOutsideIP

func GetCmdOutsideIP() string

GetCmdOutsideIP 通过命令获取外网IP

func GetInsideIp

func GetInsideIp(ctx context.Context) string

GetInsideIp 内网IP

func GetMacAddr

func GetMacAddr(ctx context.Context) (arrays []string)

GetMacAddr 获取Mac地址

func GetOutsideIPV4All

func GetOutsideIPV4All(ctx context.Context) string

GetOutsideIPV4All 外网IPV4地址

func GetOutsideIPV6All

func GetOutsideIPV6All(ctx context.Context) string

GetOutsideIPV6All 外网IPV6地址

func GetOutsideIp

func GetOutsideIp(ctx context.Context) string

GetOutsideIp 外网IP

func GetParamsString

func GetParamsString(src interface{}) string

GetParamsString 获取参数字符串

func GetRandomUserAgent

func GetRandomUserAgent() string

GetRandomUserAgent 获取随机UA

func GetRandomUserAgentSystem

func GetRandomUserAgentSystem() string

GetRandomUserAgentSystem 获取系统随机UA

func GetRequestIDContext

func GetRequestIDContext(ctx context.Context) string

GetRequestIDContext 获取请求编号

func IpIs

func IpIs(ipStr string) string

IpIs 是否ip

func IpIsConsistent

func IpIsConsistent(ipStr1, ipStr2 string) bool

IpIsConsistent 两个ip是否一致

func Ips

func Ips(ctx context.Context) (map[string]string, error)

Ips 获取全部网卡的全部IP

func IsIPV4

func IsIPV4(s string) bool

func IsIPV6

func IsIPV6(s string) bool

func IsIPv4Public

func IsIPv4Public(ip net.IP) bool

func IsIPv6Public

func IsIPv6Public(ip net.IP) bool

func IsWechatMiniProgramRequest

func IsWechatMiniProgramRequest(r *http.Request, appid string) error

IsWechatMiniProgramRequest 判断是否是微信小程序

func LenCode

func LenCode(s string) string

LenCode 编码

func ParseQuery

func ParseQuery(s string) map[string][]string

ParseQuery 获取URL参数 https://studygolang.com/articles/2876

func SetRequestIDContext

func SetRequestIDContext(ctx context.Context) context.Context

SetRequestIDContext 设置请求编号

func ToXml

func ToXml(params map[string]interface{}) (reader io.Reader, err error)

func TraceEndSpan

func TraceEndSpan(span trace.Span)

TraceEndSpan 结束OpenTelemetry链路追踪状态

func TraceGetSpanID

func TraceGetSpanID(ctx context.Context) (spanID string)

TraceGetSpanID 获取OpenTelemetry链路追踪SpanID

func TraceGetTraceID

func TraceGetTraceID(ctx context.Context) (traceID string)

TraceGetTraceID 获取OpenTelemetry链路追踪TraceID

func TraceNewSpan

func TraceNewSpan(ctx context.Context, name string, spanName string, spanValue string, version string, kind trace.SpanKind) (context.Context, trace.Span)

TraceNewSpan 创建OpenTelemetry链路追踪状态

func TraceRecordError

func TraceRecordError(ctx context.Context, err error, options ...trace.EventOption)

TraceRecordError 记录OpenTelemetry链路追踪错误

func TraceSetAttributes

func TraceSetAttributes(ctx context.Context, kv ...attribute.KeyValue)

TraceSetAttributes 设置OpenTelemetry链路追踪属性

func TraceSetStatus

func TraceSetStatus(ctx context.Context, code codes.Code, description string)

TraceSetStatus 设置OpenTelemetry链路追踪状态

func TraceSpanGetSpanID

func TraceSpanGetSpanID(span trace.Span) (spanID string)

TraceSpanGetSpanID 获取OpenTelemetry链路追踪SpanID

func TraceSpanGetTraceID

func TraceSpanGetTraceID(span trace.Span) (traceID string)

TraceSpanGetTraceID 获取OpenTelemetry链路追踪TraceID

func TraceSpanRecordError

func TraceSpanRecordError(span trace.Span, err error, options ...trace.EventOption)

TraceSpanRecordError 记录OpenTelemetry链路追踪错误

func TraceSpanSetAttributes

func TraceSpanSetAttributes(span trace.Span, kv ...attribute.KeyValue)

TraceSpanSetAttributes 设置OpenTelemetry链路追踪属性

func TraceSpanSetStatus

func TraceSpanSetStatus(span trace.Span, code codes.Code, description string)

TraceSpanSetStatus 设置OpenTelemetry链路追踪状态

func TraceStartSpan

func TraceStartSpan(ctx context.Context, spanName string) (context.Context, trace.Span)

TraceStartSpan 开始OpenTelemetry链路追踪状态

Types

type App

type App struct {
	Uri string // 全局请求地址,没有设置url才会使用
	// contains filtered or unexported fields
}

App 实例

func NewHttp

func NewHttp() *App

NewHttp 实例化

func (*App) Connect

func (c *App) Connect(ctx context.Context, uri ...string) (Response, error)

Connect 发起 CONNECT 请求

func (*App) Delete

func (c *App) Delete(ctx context.Context, uri ...string) (Response, error)

Delete 发起 DELETE 请求

func (*App) Get

func (c *App) Get(ctx context.Context, uri ...string) (Response, error)

Get 发起 GET 请求

func (*App) Head

func (c *App) Head(ctx context.Context, uri ...string) (Response, error)

Head 发起 HEAD 请求

func (*App) Options

func (c *App) Options(ctx context.Context, uri ...string) (Response, error)

Options 发起 OPTIONS 请求

func (*App) Patch

func (c *App) Patch(ctx context.Context, uri ...string) (Response, error)

Patch 发起 PATCH 请求

func (*App) Post

func (c *App) Post(ctx context.Context, uri ...string) (Response, error)

Post 发起 POST 请求

func (*App) Put

func (c *App) Put(ctx context.Context, uri ...string) (Response, error)

Put 发起 PUT 请求

func (*App) Request

func (c *App) Request(ctx context.Context) (Response, error)

Request 发起请求

func (*App) SetAuthToken

func (c *App) SetAuthToken(token string)

SetAuthToken 设置身份验证令牌

func (*App) SetClientIP

func (c *App) SetClientIP(clientIP string)

SetClientIP 设置客户端IP

func (*App) SetContentTypeForm

func (c *App) SetContentTypeForm()

SetContentTypeForm 设置FORM格式

func (*App) SetContentTypeJson

func (c *App) SetContentTypeJson()

SetContentTypeJson 设置JSON格式

func (*App) SetContentTypeXml

func (c *App) SetContentTypeXml()

SetContentTypeXml 设置XML格式

func (*App) SetCookie

func (c *App) SetCookie(cookie string)

SetCookie 设置Cookie

func (*App) SetHeader

func (c *App) SetHeader(key, value string)

SetHeader 设置请求头

func (*App) SetHeaders

func (c *App) SetHeaders(headers Headers)

SetHeaders 批量设置请求头

func (*App) SetLogFunc

func (c *App) SetLogFunc(logFunc LogFunc)

SetLogFunc 设置日志记录方法

func (*App) SetMethod

func (c *App) SetMethod(method string)

SetMethod 设置请求方式

func (*App) SetP12Cert

func (c *App) SetP12Cert(content *tls.Certificate)

SetP12Cert 设置证书

func (*App) SetParam

func (c *App) SetParam(key string, value interface{})

SetParam 设置请求参数

func (*App) SetParams

func (c *App) SetParams(params Params)

SetParams 批量设置请求参数

func (*App) SetTlsVersion

func (c *App) SetTlsVersion(minVersion, maxVersion uint16)

SetTlsVersion 设置TLS版本

func (*App) SetTrace

func (c *App) SetTrace(trace bool)

SetTrace 设置OpenTelemetry链路追踪 TODO: 等待完全删除

func (*App) SetUri

func (c *App) SetUri(uri string)

SetUri 设置请求地址

func (*App) SetUserAgent

func (c *App) SetUserAgent(ua string)

SetUserAgent 设置用户代理,传空字符串就随机设置

func (*App) Trace

func (c *App) Trace(ctx context.Context, uri ...string) (Response, error)

Trace 发起 TRACE 请求

type Headers

type Headers map[string]string

Headers 头部信息

func NewHeaders

func NewHeaders() Headers

NewHeaders 新建头部信息

func NewNewHeadersWith

func NewNewHeadersWith(headers ...Headers) Headers

NewNewHeadersWith 头部信息使用

func (*Headers) DeepCopy

func (h *Headers) DeepCopy() map[string]string

DeepCopy 深度复制

func (Headers) GetQuery

func (h Headers) GetQuery() string

GetQuery 获取头部信息

func (Headers) Set

func (h Headers) Set(key, value string)

Set 设置头部信息

func (Headers) SetHeaders

func (h Headers) SetHeaders(headers Headers)

SetHeaders 批量设置头部信息

type LogFunc

type LogFunc func(ctx context.Context, response *LogResponse)

LogFunc 日志函数

type LogResponse

type LogResponse struct {
	TraceID string `json:"trace_id"` // 追踪编号

	RequestID          string    `json:"request_id"`           // 请求编号
	RequestTime        time.Time `json:"request_time"`         // 请求时间
	RequestHost        string    `json:"request_host"`         // 请求主机
	RequestPath        string    `json:"request_path"`         // 请求地址
	RequestQuery       string    `json:"request_query"`        // 请求参数
	RequestMethod      string    `json:"request_method"`       // 请求方式
	RequestScheme      string    `json:"request_scheme"`       // 请求协议
	RequestContentType string    `json:"request_content_type"` // 请求类型
	RequestBody        string    `json:"request_body"`         // 请求内容
	RequestClientIP    string    `json:"request_client_ip"`    // 请求IP
	RequestUserAgent   string    `json:"request_user_agent"`   // 请求UA
	RequestHeader      string    `json:"request_header"`       // 请求头
	RequestCostTime    int64     `json:"request_cost_time"`    // 请求消耗时长

	ResponseTime       time.Time `json:"response_time"`        // 返回时间
	ResponseHeader     string    `json:"response_header"`      // 返回头部
	ResponseStatusCode int       `json:"response_status_code"` // 返回状态码
	ResponseBody       string    `json:"response_body"`        // 返回Json数据
	ResponseBodyJson   string    `json:"response_body_json"`   // 返回Json数据
	ResponseBodyXml    string    `json:"response_body_xml"`    // 返回Xml数据

	GoVersion  string `json:"go_version"`  // 程序GoVersion
	SdkVersion string `json:"sdk_version"` // 程序SdkVersion
}

type Params

type Params map[string]interface{}

Params 参数

func NewParams

func NewParams() Params

NewParams 新建参数

func NewParamsWith

func NewParamsWith(params ...Params) Params

NewParamsWith 参数使用

func (*Params) DeepCopy

func (p *Params) DeepCopy() map[string]interface{}

DeepCopy 深度复制

func (Params) Get

func (p Params) Get(key string) interface{}

Get 获取参数

func (Params) Set

func (p Params) Set(key string, value interface{})

Set 设置参数

func (Params) SetParams

func (p Params) SetParams(params Params)

SetParams 批量设置参数

type Response

type Response struct {
	RequestID             string      `json:"request_id"`              // 请求编号
	RequestUri            string      `json:"request_uri"`             // 请求链接
	RequestParams         Params      `json:"request_params"`          // 请求参数
	RequestMethod         string      `json:"request_method"`          // 请求方式
	RequestHeader         Headers     `json:"request_header"`          // 请求头部
	RequestCookie         string      `json:"request_cookie"`          // 请求Cookie
	RequestTime           time.Time   `json:"request_time"`            // 请求时间
	RequestCostTime       int64       `json:"request_cost_time"`       // 请求消耗时长
	ResponseHeader        http.Header `json:"response_header"`         // 响应头部
	ResponseStatus        string      `json:"response_status"`         // 响应状态
	ResponseStatusCode    int         `json:"response_status_code"`    // 响应状态码
	ResponseBody          []byte      `json:"response_body"`           // 响应内容
	ResponseContentLength int64       `json:"response_content_length"` // 响应大小
	ResponseTime          time.Time   `json:"response_time"`           // 响应时间
}

Response 返回内容

func (*Response) HeaderHtml

func (r *Response) HeaderHtml() bool

HeaderHtml 判断是否为Html

func (*Response) HeaderIsImg

func (r *Response) HeaderIsImg() bool

HeaderIsImg 判断是否为图片

func (*Response) HeaderIsJpeg

func (r *Response) HeaderIsJpeg() bool

HeaderIsJpeg 判断是否为jpeg图片

func (*Response) HeaderIsJpg

func (r *Response) HeaderIsJpg() bool

HeaderIsJpg 判断是否为Jpg图片

func (*Response) HeaderIsPng

func (r *Response) HeaderIsPng() bool

HeaderIsPng 判断是否为Png图片

func (*Response) HeaderJson

func (r *Response) HeaderJson() bool

HeaderJson 判断是否为Json数据

func (*Response) HeaderTextHtml

func (r *Response) HeaderTextHtml() bool

HeaderTextHtml 判断是否为Html

func (*Response) HeaderXHtml

func (r *Response) HeaderXHtml() bool

HeaderXHtml 判断是否为Html

type ResponseUrlParse

type ResponseUrlParse struct {
	Uri      string `json:"uri"`       // URI
	Urn      string `json:"urn"`       // URN
	Url      string `json:"url"`       // URL
	Scheme   string `json:"scheme"`    // 协议
	Host     string `json:"host"`      // 主机
	Hostname string `json:"hostname"`  // 主机名
	Port     string `json:"port"`      // 端口
	Path     string `json:"path"`      // 路径
	RawQuery string `json:"raw_query"` // 参数 ?
	Fragment string `json:"fragment"`  // 片段 #
}

ResponseUrlParse 返回参数

type UriParse

type UriParse struct {
	// contains filtered or unexported fields
}

func NewUri

func NewUri(uri string) *UriParse

func (*UriParse) Parse

func (u *UriParse) Parse() (resp ResponseUrlParse)

Parse 解析URl

func (*UriParse) UriFilterExcludeQueryString

func (u *UriParse) UriFilterExcludeQueryString() string

UriFilterExcludeQueryString 过滤掉url中的参数

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL