Documentation
¶
Index ¶
- Variables
- type BufferPool
- type Client
- func (c *Client) DELETE(urlStr string) *RequestBuilder
- func (c *Client) Delete(ctx context.Context, url string) (*http.Response, error)
- func (c *Client) Do(req *http.Request) (*http.Response, error)
- func (c *Client) GET(urlStr string) *RequestBuilder
- func (c *Client) Get(url string) (*http.Response, error)
- func (c *Client) GetContext(ctx context.Context, url string) (*http.Response, error)
- func (c *Client) HEAD(urlStr string) *RequestBuilder
- func (c *Client) NewRequest(method, urlStr string, body io.Reader) (*http.Request, error)
- func (c *Client) NewRequestBuilder(method, urlStr string) *RequestBuilder
- func (c *Client) OPTIONS(urlStr string) *RequestBuilder
- func (c *Client) PATCH(urlStr string) *RequestBuilder
- func (c *Client) POST(urlStr string) *RequestBuilder
- func (c *Client) PUT(urlStr string) *RequestBuilder
- func (c *Client) Post(ctx context.Context, url string, body io.Reader) (*http.Response, error)
- func (c *Client) PostGOB(ctx context.Context, url string, body interface{}) (*http.Response, error)
- func (c *Client) PostJSON(ctx context.Context, url string, body interface{}) (*http.Response, error)
- func (c *Client) PostXML(ctx context.Context, url string, body interface{}) (*http.Response, error)
- func (c *Client) Put(ctx context.Context, url string, body io.Reader) (*http.Response, error)
- func (c *Client) PutGOB(ctx context.Context, url string, body interface{}) (*http.Response, error)
- func (c *Client) PutJSON(ctx context.Context, url string, body interface{}) (*http.Response, error)
- func (c *Client) PutXML(ctx context.Context, url string, body interface{}) (*http.Response, error)
- func (c *Client) SetDumpLogFunc(dumpLog DumpLogFunc)
- func (c *Client) SetRetryOptions(opts RetryOptions)
- func (c *Client) SetTimeout(timeout time.Duration)
- type DumpLogFunc
- type HTTPError
- type MiddlewareFunc
- type Option
- func WithBufferPool(pool BufferPool) Option
- func WithBufferSize(bufferSize int) Option
- func WithDNSResolver(servers []string, timeout time.Duration) Option
- func WithDialTimeout(dialTimeout time.Duration) Option
- func WithDumpLog() Option
- func WithDumpLogFunc(dumpLog DumpLogFunc) Option
- func WithExpectContinueTimeout(expectContinueTimeout time.Duration) Option
- func WithHTTPProxy(proxyURL string) Option
- func WithIdleConnTimeout(idleConnTimeout time.Duration) Option
- func WithKeepAliveTimeout(keepAliveTimeout time.Duration) Option
- func WithMaxBufferPoolSize(maxBufferPool int) Option
- func WithMaxIdleConns(maxIdleConns int) Option
- func WithMiddleware(middleware ...MiddlewareFunc) Option
- func WithProtocols(config ProtocolsConfig) Option
- func WithRetryOptions(opts RetryOptions) Option
- func WithSocks5Proxy(proxyURL string) Option
- func WithTLSHandshakeTimeout(tlsHandshakeTimeout time.Duration) Option
- func WithTimeout(timeout time.Duration) Option
- func WithTransport(t *http.Transport) Option
- func WithUserAgent(ua string) Option
- type ProtocolsConfig
- type RequestBuilder
- func (rb *RequestBuilder) AddHeader(key, value string) *RequestBuilder
- func (rb *RequestBuilder) AddQueryParam(key, value string) *RequestBuilder
- func (rb *RequestBuilder) Build() (*http.Request, error)
- func (rb *RequestBuilder) Bytes() ([]byte, error)
- func (rb *RequestBuilder) DecodeGOB(v interface{}) error
- func (rb *RequestBuilder) DecodeJSON(v interface{}) error
- func (rb *RequestBuilder) DecodeXML(v interface{}) error
- func (rb *RequestBuilder) Execute() (*http.Response, error)
- func (rb *RequestBuilder) NoDefaultHeaders() *RequestBuilder
- func (rb *RequestBuilder) SetBody(body io.Reader) *RequestBuilder
- func (rb *RequestBuilder) SetGOBBody(body interface{}) (*RequestBuilder, error)
- func (rb *RequestBuilder) SetHeader(key, value string) *RequestBuilder
- func (rb *RequestBuilder) SetHeaders(headers map[string]string) *RequestBuilder
- func (rb *RequestBuilder) SetJSONBody(body interface{}) (*RequestBuilder, error)
- func (rb *RequestBuilder) SetQueryParam(key, value string) *RequestBuilder
- func (rb *RequestBuilder) SetQueryParams(params map[string]string) *RequestBuilder
- func (rb *RequestBuilder) SetRawBody(body []byte) *RequestBuilder
- func (rb *RequestBuilder) SetXMLBody(body interface{}) (*RequestBuilder, error)
- func (rb *RequestBuilder) Text() (string, error)
- func (rb *RequestBuilder) WithContext(ctx context.Context) *RequestBuilder
- type RetryOptions
- type RoundTripperFunc
Constants ¶
This section is empty.
Variables ¶
var ( ErrRequestTimeout = errors.New("httpc: request timeout") ErrMaxRetriesExceeded = errors.New("httpc: max retries exceeded") ErrDecodeResponse = errors.New("httpc: failed to decode response body") ErrInvalidURL = errors.New("httpc: invalid URL") ErrNoResponse = errors.New("httpc: no response") )
错误定义
var EOF = io.EOF
var ErrShortWrite = errors.New("short write")
Functions ¶
This section is empty.
Types ¶
type BufferPool ¶
BufferPool 缓冲池接口
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client 主客户端结构
func (*Client) DELETE ¶
func (c *Client) DELETE(urlStr string) *RequestBuilder
func (*Client) GET ¶
func (c *Client) GET(urlStr string) *RequestBuilder
GET, POST, PUT, DELETE 等快捷方法
func (*Client) GetContext ¶
GetContext 发送带 Context 的 GET 请求
func (*Client) HEAD ¶
func (c *Client) HEAD(urlStr string) *RequestBuilder
func (*Client) NewRequest ¶
NewRequest 创建请求,支持与 http.NewRequest 兼容
func (*Client) NewRequestBuilder ¶
func (c *Client) NewRequestBuilder(method, urlStr string) *RequestBuilder
NewRequestBuilder 创建 RequestBuilder 实例
func (*Client) OPTIONS ¶
func (c *Client) OPTIONS(urlStr string) *RequestBuilder
func (*Client) PATCH ¶
func (c *Client) PATCH(urlStr string) *RequestBuilder
func (*Client) POST ¶
func (c *Client) POST(urlStr string) *RequestBuilder
func (*Client) PUT ¶
func (c *Client) PUT(urlStr string) *RequestBuilder
func (*Client) PostJSON ¶
func (c *Client) PostJSON(ctx context.Context, url string, body interface{}) (*http.Response, error)
PostJSON 发送 JSON POST 请求
func (*Client) SetDumpLogFunc ¶
func (c *Client) SetDumpLogFunc(dumpLog DumpLogFunc)
SetDumpLogFunc 动态设置日志记录函数
func (*Client) SetRetryOptions ¶
func (c *Client) SetRetryOptions(opts RetryOptions)
SetRetryOptions 动态设置重试选项
type HTTPError ¶
type HTTPError struct {
StatusCode int // HTTP 状态码
Status string // HTTP 状态文本 (e.g., "Not Found")
Header http.Header // 响应头 (副本)
Body []byte // 响应体的前缀 (用于预览)
}
HTTPError 表示一个 HTTP 错误响应 (状态码 >= 400). 它实现了 error 接口.
type MiddlewareFunc ¶
type MiddlewareFunc func(next http.RoundTripper) http.RoundTripper
MiddlewareFunc 是客户端中间件的类型 它接收一个 http.RoundTripper (代表下一个处理器) 并返回一个新的 http.RoundTripper
type Option ¶
type Option func(*Client)
Option 配置选项类型
func WithDNSResolver ¶ added in v0.7.1
WithDNSResolver 设置自定义DNS解析器 servers: 一个或多个DNS服务器地址, 格式为 "ip:port" (例如, "8.8.8.8:53") timeout: DNS查询的超时时间如果为0, 将使用默认超时 (5秒) 此选项会覆盖系统默认的DNS解析行为
func WithDialTimeout ¶
WithDialTimeout 设置 DialContext 的超时时间
func WithExpectContinueTimeout ¶
WithExpectContinueTimeout 设置 ExpectContinue 超时时间
func WithHTTPProxy ¶ added in v0.8.1
WithHTTPProxy 设置 HTTP/HTTPS 代理 proxyURL: HTTP/HTTPS 代理地址, 例如 "http://user:password@host:port"
func WithIdleConnTimeout ¶
WithIdleConnTimeout 设置空闲连接超时时间
func WithKeepAliveTimeout ¶
WithKeepAliveTimeout 设置 KeepAlive 超时时间
func WithMaxBufferPoolSize ¶
WithMaxBufferPoolSize 自定义最大缓冲池数量
func WithProtocols ¶
func WithProtocols(config ProtocolsConfig) Option
WithProtocols 配置客户端支持的 HTTP 协议版本
func WithSocks5Proxy ¶ added in v0.8.1
WithSocks5Proxy 设置 SOCKS5 代理 proxyURL: SOCKS5 代理地址, 例如 "socks5://user:password@host:port" 如果代理不需要认证, 可以省略 user:password, 例如 "socks5://host:port"
func WithTLSHandshakeTimeout ¶
WithTLSHandshakeTimeout 设置 TLS 握手超时时间
func WithTransport ¶
WithTransport 自定义 Transport,将非零字段合并到默认 Transport 中
type ProtocolsConfig ¶
type ProtocolsConfig struct {
Http1 bool // 是否启用 HTTP/1.1
Http2 bool // 是否启用 HTTP/2
Http2_Cleartext bool // 是否启用 H2C
ForceH2C bool // 是否强制启用 H2C
}
ProtocolsConfig 协议版本配置结构体
type RequestBuilder ¶
type RequestBuilder struct {
// contains filtered or unexported fields
}
RequestBuilder 用于构建请求的结构体
func (*RequestBuilder) AddHeader ¶
func (rb *RequestBuilder) AddHeader(key, value string) *RequestBuilder
AddHeader 添加 Header
func (*RequestBuilder) AddQueryParam ¶
func (rb *RequestBuilder) AddQueryParam(key, value string) *RequestBuilder
AddQueryParam 添加 Query 参数
func (*RequestBuilder) Build ¶
func (rb *RequestBuilder) Build() (*http.Request, error)
Build 构建 http.Request
func (*RequestBuilder) DecodeGOB ¶
func (rb *RequestBuilder) DecodeGOB(v interface{}) error
DecodeGOB 解析 GOB 响应
func (*RequestBuilder) DecodeJSON ¶
func (rb *RequestBuilder) DecodeJSON(v interface{}) error
DecodeJSON 解析 JSON 响应
func (*RequestBuilder) DecodeXML ¶
func (rb *RequestBuilder) DecodeXML(v interface{}) error
DecodeXML 解析 XML 响应
func (*RequestBuilder) Execute ¶
func (rb *RequestBuilder) Execute() (*http.Response, error)
Execute 执行请求并返回 http.Response
func (*RequestBuilder) NoDefaultHeaders ¶
func (rb *RequestBuilder) NoDefaultHeaders() *RequestBuilder
NoDefaultHeaders 设置请求不添加默认 Header
func (*RequestBuilder) SetBody ¶
func (rb *RequestBuilder) SetBody(body io.Reader) *RequestBuilder
SetBody 设置 Body (io.Reader)
func (*RequestBuilder) SetGOBBody ¶
func (rb *RequestBuilder) SetGOBBody(body interface{}) (*RequestBuilder, error)
SetGOBBody 设置GOB Body
func (*RequestBuilder) SetHeader ¶
func (rb *RequestBuilder) SetHeader(key, value string) *RequestBuilder
SetHeader 设置 Header
func (*RequestBuilder) SetHeaders ¶
func (rb *RequestBuilder) SetHeaders(headers map[string]string) *RequestBuilder
SetHeaders 批量设置 Headers
func (*RequestBuilder) SetJSONBody ¶
func (rb *RequestBuilder) SetJSONBody(body interface{}) (*RequestBuilder, error)
SetJSONBody 设置 JSON Body
func (*RequestBuilder) SetQueryParam ¶
func (rb *RequestBuilder) SetQueryParam(key, value string) *RequestBuilder
SetQueryParam 设置 Query 参数
func (*RequestBuilder) SetQueryParams ¶
func (rb *RequestBuilder) SetQueryParams(params map[string]string) *RequestBuilder
SetQueryParams 批量设置 Query 参数
func (*RequestBuilder) SetRawBody ¶ added in v0.8.1
func (rb *RequestBuilder) SetRawBody(body []byte) *RequestBuilder
SetRawBody 设置 Body ([]byte)
func (*RequestBuilder) SetXMLBody ¶
func (rb *RequestBuilder) SetXMLBody(body interface{}) (*RequestBuilder, error)
SetXMLBody 设置 XML Body
func (*RequestBuilder) WithContext ¶
func (rb *RequestBuilder) WithContext(ctx context.Context) *RequestBuilder
WithContext 设置 Context