Documentation
¶
Overview ¶
Package httpx 提供基于 net/http 的薄高性能 HTTP 客户端库: 连接复用、分层超时、可选幂等重试与协议适配 (HTTP/1.1 / HTTP/2 / HTTP/3),与 errx / logx 打通, 统一错误、日志与指标。 实现主体位于 internal/core,本包仅暴露稳定公开 API。
Index ¶
- Constants
- func EnsureStatus(resp *http.Response, codes ...int) error
- func ErrorStatus(err error) int
- func IsRetryable(err error) bool
- func IsTimeout(err error) bool
- func JSON(resp *http.Response, out any) error
- func ReadBody(resp *http.Response, maxBytes int64) ([]byte, error)
- func ReadFile(resp *http.Response, path string, maxBytes int64) error
- func ReadStream(resp *http.Response, fn func([]byte) error, maxBytes int64) error
- func ReadString(resp *http.Response, maxBytes int64) (string, error)
- func RegisterHTTP3(builder func(ProtocolConfig) (http.RoundTripper, error))
- func WriteErrorJSON(w http.ResponseWriter, err error)
- type Backoff
- type Client
- type DNSCache
- type FileField
- type Hooks
- type Metrics
- type Option
- func WithCookieJar(jar http.CookieJar) Option
- func WithDNSCache(cache *DNSCache) Option
- func WithDialTimeout(d time.Duration) Option
- func WithDisableCompression(disabled bool) Option
- func WithExpectContinueTimeout(d time.Duration) Option
- func WithHTTP2HealthCheck(readIdle, pingTimeout time.Duration) Option
- func WithHooks(h Hooks) Option
- func WithIdleConnTimeout(d time.Duration) Option
- func WithLogRequest(enabled bool) Option
- func WithLogger(l logx.Logger) Option
- func WithMaxConcurrency(n int) Option
- func WithMaxConnsPerHost(n int) Option
- func WithMaxIdleConns(n int) Option
- func WithMaxIdleConnsPerHost(n int) Option
- func WithMaxRedirects(n int) Option
- func WithMaxResponseHeaderBytes(n int64) Option
- func WithMetrics(m Metrics) Option
- func WithNoRedirect() Option
- func WithProtocol(p Protocol) Option
- func WithProxy(proxy func(*http.Request) (*url.URL, error)) Option
- func WithRedirectPolicy(policy func(*http.Request, []*http.Request) error) Option
- func WithResponseHeaderTimeout(d time.Duration) Option
- func WithRetry(maxAttempts int, backoff Backoff) Option
- func WithRetryPolicy(p RetryPolicy) Option
- func WithRoundTripperWrapper(wrap func(http.RoundTripper) http.RoundTripper) Option
- func WithSlowThreshold(d time.Duration) Option
- func WithTLSClientConfig(cfg *tls.Config) Option
- func WithTLSHandshakeTimeout(d time.Duration) Option
- func WithTimeout(d time.Duration) Option
- type Protocol
- type ProtocolConfig
- type RequestOption
- func WithBasicAuth(user, pass string) RequestOption
- func WithBearer(token string) RequestOption
- func WithBytesBody(b []byte) RequestOption
- func WithFormBody(v url.Values) RequestOption
- func WithHeader(key, value string) RequestOption
- func WithJSONBody(v any) RequestOption
- func WithMultipartFormData(fields map[string]string, files map[string]FileField) RequestOption
- func WithQuery(key, value string) RequestOption
- func WithRequestID(id string) RequestOption
- func WithRequestTimeout(d time.Duration) RequestOption
- func WithUserAgent(ua string) RequestOption
- func WithXMLBody(v any) RequestOption
- type RetryPolicy
- type Stats
Constants ¶
View Source
const ( CodeInvalidConfig = core.CodeInvalidConfig CodeUnsupportedProtocol = core.CodeUnsupportedProtocol CodeDialFailed = core.CodeDialFailed CodeTLSFailed = core.CodeTLSFailed CodeRequestFailed = core.CodeRequestFailed CodeResponseFailed = core.CodeResponseFailed CodeRetryExhausted = core.CodeRetryExhausted CodeBodyTooLarge = core.CodeBodyTooLarge CodeBodyUnreadable = core.CodeBodyUnreadable CodeRedirectExceeded = core.CodeRedirectExceeded CodeRedirectFailed = core.CodeRedirectFailed CodeUnexpectedStatus = core.CodeUnexpectedStatus )
错误码定义:httpx 各失败场景的错误码,统一为 HTX_*。
View Source
const ( ProtocolAuto = core.ProtocolAuto ProtocolHTTP1 = core.ProtocolHTTP1 ProtocolHTTP2 = core.ProtocolHTTP2 ProtocolHTTP3 = core.ProtocolHTTP3 )
协议常量:HTTP/1.1 / HTTP/2 / HTTP/3 选择。
View Source
const Version = core.Version
Version 是当前库版本,与 git tag 保持一致。
Variables ¶
This section is empty.
Functions ¶
func EnsureStatus ¶ added in v0.5.0
EnsureStatus 校验响应状态码。
func ReadStream ¶ added in v0.3.0
ReadStream 逐块读取响应体并回调 fn。
func ReadString ¶
ReadString 读取响应体为字符串并关闭 Body。
func RegisterHTTP3 ¶
func RegisterHTTP3(builder func(ProtocolConfig) (http.RoundTripper, error))
RegisterHTTP3 注册 HTTP/3 RoundTripper 构造器。
func WriteErrorJSON ¶ added in v1.3.0
func WriteErrorJSON(w http.ResponseWriter, err error)
WriteErrorJSON 将错误以 JSON 形式写入 ResponseWriter。
Types ¶
type DNSCache ¶ added in v0.3.0
公开类型:与 internal/core 保持一致。
func NewDNSCache ¶ added in v0.3.0
NewDNSCache 创建 DNS 缓存。
type Option ¶
公开类型:与 internal/core 保持一致。
func WithCookieJar ¶ added in v0.2.0
func WithDNSCache ¶ added in v0.3.0
func WithDialTimeout ¶
func WithDisableCompression ¶ added in v0.2.0
func WithExpectContinueTimeout ¶ added in v0.4.0
func WithHTTP2HealthCheck ¶ added in v0.3.0
func WithIdleConnTimeout ¶
func WithLogRequest ¶
func WithLogger ¶
func WithMaxConcurrency ¶ added in v0.3.0
func WithMaxConnsPerHost ¶ added in v0.4.0
func WithMaxIdleConns ¶
func WithMaxIdleConnsPerHost ¶
func WithMaxRedirects ¶ added in v0.2.0
func WithMaxResponseHeaderBytes ¶ added in v0.4.0
func WithMetrics ¶
func WithNoRedirect ¶ added in v0.2.0
func WithNoRedirect() Option
func WithProtocol ¶
func WithRedirectPolicy ¶ added in v0.2.0
func WithRetryPolicy ¶ added in v0.3.0
func WithRetryPolicy(p RetryPolicy) Option
func WithRoundTripperWrapper ¶ added in v1.0.4
func WithRoundTripperWrapper(wrap func(http.RoundTripper) http.RoundTripper) Option
func WithSlowThreshold ¶
func WithTLSClientConfig ¶
func WithTLSHandshakeTimeout ¶
type RequestOption ¶
type RequestOption = core.RequestOption
公开类型:与 internal/core 保持一致。
func WithBasicAuth ¶
func WithBasicAuth(user, pass string) RequestOption
func WithBearer ¶
func WithBearer(token string) RequestOption
func WithBytesBody ¶
func WithBytesBody(b []byte) RequestOption
func WithFormBody ¶
func WithFormBody(v url.Values) RequestOption
func WithJSONBody ¶
func WithJSONBody(v any) RequestOption
func WithMultipartFormData ¶ added in v0.2.0
func WithMultipartFormData(fields map[string]string, files map[string]FileField) RequestOption
func WithQuery ¶
func WithQuery(key, value string) RequestOption
func WithRequestID ¶ added in v0.4.0
func WithRequestID(id string) RequestOption
func WithRequestTimeout ¶ added in v0.3.0
func WithRequestTimeout(d time.Duration) RequestOption
func WithUserAgent ¶
func WithUserAgent(ua string) RequestOption
func WithXMLBody ¶ added in v0.2.0
func WithXMLBody(v any) RequestOption
Click to show internal directories.
Click to hide internal directories.