Documentation
¶
Index ¶
- func Do(ctx context.Context, req *http.Request) (*http.Response, error)
- func Get(ctx context.Context, url string) (*http.Response, error)
- func GetCertificates(ctx context.Context, requestURL, method, address string, timeout time.Duration) ([]*x509.Certificate, error)
- func GetCertificatesExpirestime(ctx context.Context, requestURL, method, address string, timeout time.Duration) (int, error)
- func Head(ctx context.Context, url string) (*http.Response, error)
- func NewLogErrorHook(logger kitlog.Logger) *logErrorHook
- func NewSlowHook(logger kitlog.Logger, threshold time.Duration) *slowHook
- func NewTraceHook(logger kitlog.Logger) *traceHook
- func Post(ctx context.Context, url string, body io.Reader) (*http.Response, error)
- func PostForm(ctx context.Context, url string, data url.Values) (*http.Response, error)
- func PostJSON(ctx context.Context, url string, data any) (*http.Response, error)
- type Client
- type Hook
- type HookContext
- func (h *HookContext) Deadline() (deadline time.Time, ok bool)
- func (h *HookContext) Done() <-chan struct{}
- func (h *HookContext) Duration() time.Duration
- func (h *HookContext) EndTime() time.Time
- func (h *HookContext) Err() error
- func (h *HookContext) GetHookValue(key string) (interface{}, bool)
- func (h *HookContext) Method() string
- func (h *HookContext) OriginError() error
- func (h *HookContext) OriginResult() any
- func (h *HookContext) Request() *http.Request
- func (h *HookContext) SetHookValue(key string, value interface{})
- func (h *HookContext) SetResult(response *http.Response, err error)
- func (h *HookContext) StartTime() time.Time
- func (h *HookContext) Url() string
- func (h *HookContext) Value(key interface{}) interface{}
- type HookManager
- type Option
- func WithHook(hook Hook) Option
- func WithLogError(logError bool) Option
- func WithLogSlow(logSlow time.Duration) Option
- func WithLogger(logger kitlog.Logger) Option
- func WithMaxConnsPerHost(maxConnsPerHost int) Option
- func WithMaxIdleConns(maxIdleConns int) Option
- func WithMaxIdleConnsPerHost(maxIdleConnsPerHost int) Option
- func WithName(name string) Option
- func WithProxy(proxy func(*http.Request) (*url.URL, error)) Option
- func WithTimeout(timeout time.Duration) Option
- func WithTraceEnable(enable bool) Option
- func WithTransport(transport *http.Transport) Option
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Do ¶
Do 执行自定义的 HTTP 请求(全局默认客户端)。
参数:
- ctx context.Context:请求上下文。
- req *http.Request:HTTP 请求对象。
返回值:
- *http.Response:HTTP 响应对象。
- error:请求错误信息。
func Get ¶
Get 发送 HTTP GET 请求(全局默认客户端)。
参数:
- ctx context.Context:请求上下文。
- url string:请求地址。
返回值:
- *http.Response:HTTP 响应对象。
- error:请求错误信息。
func GetCertificates ¶
func GetCertificates(ctx context.Context, requestURL, method, address string, timeout time.Duration) ([]*x509.Certificate, error)
GetCertificates 获取证书。
参数: - ctx context.Context 上下文对象,用于控制超时与取消。 - requestURL string 需要进行证书请求的 URL 地址。 - method string (可选)请求时使用的方式,如果为空值,则默认使用 HEAD。 - address string (可选)指定的服务器 Endpoint,包含 IP 和端口,例如:127.0.0.1:443。 - timeout time.Duration 超时时间。
返回值: - []*x509.Certificate 获取到的证书链。 - error 错误信息。
func GetCertificatesExpirestime ¶
func GetCertificatesExpirestime(ctx context.Context, requestURL, method, address string, timeout time.Duration) (int, error)
GetCertificatesExpirestime 获取证书剩余有效期。
参数: - ctx context.Context 上下文对象,用于控制超时与取消。 - requestURL string 需要进行证书请求的 URL 地址。 - method string (可选)请求时使用的方式,如果为空值,则默认使用 HEAD。 - address string (可选)指定的服务器 Endpoint,包含 IP 和端口,例如:127.0.0.1:443。 - timeout time.Duration 超时时间。
返回值: - int 证书剩余有效天数,-99 表示获取证书失败,-98 表示未获取到证书。 - error 错误信息。
func Head ¶
Head 发送 HTTP HEAD 请求(全局默认客户端)。
参数:
- ctx context.Context:请求上下文。
- url string:请求地址。
返回值:
- *http.Response:HTTP 响应对象。
- error:请求错误信息。
func NewLogErrorHook ¶
func NewTraceHook ¶
func Post ¶
Post 发送 HTTP POST 请求(全局默认客户端)。
参数:
- ctx context.Context:请求上下文。
- url string:请求地址。
- body io.Reader:请求体。
返回值:
- *http.Response:HTTP 响应对象。
- error:请求错误信息。
Types ¶
type Client ¶
type Client interface {
// Do 执行自定义的 HTTP 请求。
//
// 参数:
// - ctx context.Context:请求上下文。
// - req *http.Request:HTTP 请求对象。
// 返回值:
// - *http.Response:HTTP 响应对象。
// - error:请求错误信息。
Do(ctx context.Context, req *http.Request) (*http.Response, error)
// Head 发送 HTTP HEAD 请求。
//
// 参数:
// - ctx context.Context:请求上下文。
// - url string:请求地址。
// 返回值:
// - *http.Response:HTTP 响应对象。
// - error:请求错误信息。
Head(ctx context.Context, url string) (*http.Response, error)
// Get 发送 HTTP GET 请求。
//
// 参数:
// - ctx context.Context:请求上下文。
// - url string:请求地址。
// 返回值:
// - *http.Response:HTTP 响应对象。
// - error:请求错误信息。
Get(ctx context.Context, url string) (*http.Response, error)
// Post 发送 HTTP POST 请求。
//
// 参数:
// - ctx context.Context:请求上下文。
// - url string:请求地址。
// - body io.Reader:请求体。
// 返回值:
// - *http.Response:HTTP 响应对象。
// - error:请求错误信息。
Post(ctx context.Context, url string, body io.Reader) (*http.Response, error)
// PostForm 发送表单 POST 请求。
//
// 参数:
// - ctx context.Context:请求上下文。
// - url string:请求地址。
// - data url.Values:表单数据。
// 返回值:
// - *http.Response:HTTP 响应对象。
// - error:请求错误信息。
PostForm(ctx context.Context, url string, data url.Values) (*http.Response, error)
// PostJSON 发送 JSON POST 请求。
//
// 参数:
// - ctx context.Context:请求上下文。
// - url string:请求地址。
// - data any:JSON 数据。
// 返回值:
// - *http.Response:HTTP 响应对象。
// - error:请求错误信息。
PostJSON(ctx context.Context, url string, data any) (*http.Response, error)
}
Client 定义了 HTTP 客户端的接口。
提供常用的 HTTP 请求方法。
type Hook ¶
type Hook interface {
// Before 在操作执行前调用。
//
// 参数:
// - ctx:钩子上下文,包含操作的相关信息。
//
// 返回值:
// - error:如果钩子执行出错,返回相应的错误信息。
Before(ctx *HookContext) error
// After 在操作执行后调用。
//
// 参数:
// - ctx:钩子上下文,包含操作的相关信息和结果。
//
// 返回值:
// - error:如果钩子执行出错,返回相应的错误信息。
After(ctx *HookContext) error
}
Hook 定义 HTTP 操作的钩子接口。
该接口用于在 HTTP 操作执行前后插入自定义逻辑。
type HookContext ¶
type HookContext struct {
// contains filtered or unexported fields
}
HookContext 包含 HTTP 操作的上下文信息。
该结构体用于在 HTTP 请求生命周期中传递操作相关的上下文、请求信息、执行结果、错误信息及自定义钩子数据。
func NewHookContext ¶
NewHookContext 创建一个新的 HookContext 实例。
参数:
- ctx:原始上下文对象,用于控制操作的生命周期。
- method:HTTP 方法,如 GET、POST 等。
- url:请求的 URL 地址。
- request:原始 HTTP 请求对象。
返回值:
- *HookContext:返回一个新创建的 HookContext 实例。
func (*HookContext) Deadline ¶
func (h *HookContext) Deadline() (deadline time.Time, ok bool)
Deadline 实现 context.Context 接口。
返回值:
- deadline:返回上下文的截止时间。
- ok:如果设置了截止时间返回 true,否则返回 false。
func (*HookContext) Done ¶
func (h *HookContext) Done() <-chan struct{}
Done 实现 context.Context 接口。
返回值:
- <-chan struct{}:返回一个 channel,当上下文被取消时会被关闭。
func (*HookContext) Duration ¶
func (h *HookContext) Duration() time.Duration
Duration 返回操作持续时间。
返回值:
- time.Duration:返回操作的持续时间。
func (*HookContext) EndTime ¶
func (h *HookContext) EndTime() time.Time
EndTime 返回操作结束时间。
返回值:
- time.Time:返回操作的结束时间。
func (*HookContext) Err ¶
func (h *HookContext) Err() error
Err 实现 context.Context 接口。
返回值:
- error:如果上下文被取消,返回取消的原因。
func (*HookContext) GetHookValue ¶
func (h *HookContext) GetHookValue(key string) (interface{}, bool)
GetHookValue 获取 hook 中的值。
参数:
- key:要获取的键名。
返回值:
- interface{}:返回与键关联的值。
- bool:如果键存在返回 true,否则返回 false。
func (*HookContext) Method ¶
func (h *HookContext) Method() string
Method 返回 HTTP 方法。
返回值:
- string:返回 HTTP 方法字符串。
func (*HookContext) OriginError ¶
func (h *HookContext) OriginError() error
OriginError 返回原始操作错误。
返回值:
- error:返回操作过程中产生的原始错误。
func (*HookContext) OriginResult ¶
func (h *HookContext) OriginResult() any
OriginResult 返回原始操作结果。
返回值:
- any:返回操作的原始结果。
func (*HookContext) Request ¶
func (h *HookContext) Request() *http.Request
Request 返回原始 HTTP 请求对象。
返回值:
- *http.Request:返回原始 HTTP 请求指针。
func (*HookContext) SetHookValue ¶
func (h *HookContext) SetHookValue(key string, value interface{})
SetHookValue 设置 hook 中的值。
参数:
- key:要设置的键名。
- value:要存储的值。
func (*HookContext) SetResult ¶
func (h *HookContext) SetResult(response *http.Response, err error)
SetResult 设置操作结果和结束时间。
参数:
- response:HTTP 返回对象。
- err:操作过程中产生的错误,如果没有错误则为 nil。
func (*HookContext) StartTime ¶
func (h *HookContext) StartTime() time.Time
StartTime 返回操作开始时间。
返回值:
- time.Time:返回操作的开始时间。
func (*HookContext) Url ¶
func (h *HookContext) Url() string
Url 返回请求的 URL。
返回值:
- string:返回请求的 URL 字符串。
func (*HookContext) Value ¶
func (h *HookContext) Value(key interface{}) interface{}
Value 实现 context.Context 接口。
参数:
- key:要获取的值的键。
返回值:
- interface{}:返回与键关联的值。
type HookManager ¶
type HookManager struct {
// contains filtered or unexported fields
}
HookManager 管理多个 Hook 的执行。
该结构体用于统一管理和调度多个钩子的执行顺序。
func NewHookManager ¶
func NewHookManager() *HookManager
NewHookManager 创建一个新的 HookManager 实例。
返回值:
- *HookManager:返回一个新创建的 HookManager 实例。
func (*HookManager) AddHook ¶
func (m *HookManager) AddHook(hook Hook)
AddHook 添加一个 Hook。
参数:
- hook:要添加的钩子实例。
func (*HookManager) After ¶
func (m *HookManager) After(ctx *HookContext) error
After 实现 Hook 接口,按逆序执行所有 Hook 的 After 方法。
参数:
- ctx:钩子上下文,包含操作的相关信息和结果。
返回值:
- error:如果任何钩子执行出错,返回第一个错误信息。
func (*HookManager) Before ¶
func (m *HookManager) Before(ctx *HookContext) error
Before 实现 Hook 接口,按顺序执行所有 Hook 的 Before 方法。
参数:
- ctx:钩子上下文,包含操作的相关信息。
返回值:
- error:如果任何钩子执行出错,返回第一个错误信息。
type Option ¶
type Option func(c *client)
Option 定义用于配置 client 的函数类型。
通过 Option,可以灵活地设置 client 的各项参数。
func WithLogError ¶
WithLogError 设置 HTTP 客户端的错误记录功能开关。
参数:
- logError bool:是否启用错误记录功能。
返回值:
- Option:用于设置错误记录功能的配置项。
func WithLogSlow ¶
WithLogSlow 设置 HTTP 客户端的慢请求阈值。
参数:
- logSlow time.Duration:自定义的慢请求阈值。
返回值:
- Option:用于设置慢请求阈值的配置项。
func WithLogger ¶
WithLogger 设置 HTTP 客户端的日志记录器。
参数:
- logger kitlog.Logger:自定义的日志记录器实现。
返回值:
- Option:用于设置日志记录器的配置项。
func WithMaxConnsPerHost ¶
WithMaxConnsPerHost 设置每个主机的最大连接数。
参数:
- maxConnsPerHost int:自定义的最大连接数。
返回值:
- Option:用于设置最大连接数的配置项。
func WithMaxIdleConns ¶
WithMaxIdleConns 设置所有主机的最大空闲连接数。
参数:
- maxIdleConns int:自定义的最大空闲连接数。
返回值:
- Option:用于设置最大空闲连接数的配置项。
func WithMaxIdleConnsPerHost ¶
WithMaxIdleConnsPerHost 设置每个主机的最大空闲连接数。
参数:
- maxIdleConnsPerHost int:自定义的最大空闲连接数。
返回值:
- Option:用于设置最大空闲连接数的配置项。
func WithProxy ¶
WithProxy 设置 HTTP 客户端代理。
参数:
- proxy func(*http.Request) (*url.URL, error):自定义代理函数,用于根据请求返回代理 URL。
返回值:
- Option:用于设置代理的配置项。
func WithTimeout ¶
WithTimeout 设置 HTTP 客户端超时时间。
参数:
- timeout time.Duration:自定义超时时间。
返回值:
- Option:用于设置超时时间的配置项。
func WithTraceEnable ¶
func WithTransport ¶
WithTransport 设置自定义的 http.Transport。
参数:
- transport *http.Transport:自定义的传输层配置。
返回值:
- Option:用于设置传输层的配置项。