Documentation
¶
Overview ¶
Package httpclient provides a convenient HTTP client with request builders.
Index ¶
- func CircuitBreakerMiddleware(cb *CircuitBreaker) func(http.RoundTripper) http.RoundTripper
- func LoggingMiddleware(logger Logger) func(http.RoundTripper) http.RoundTripper
- func RateLimitMiddleware(limiter *RateLimiter) func(http.RoundTripper) http.RoundTripper
- func RetryMiddleware(config RetryConfig) func(http.RoundTripper) http.RoundTripper
- type CircuitBreaker
- type CircuitBreakerConfig
- type CircuitBreakerState
- type Client
- func (c *Client) DELETE(ctx context.Context, path string) *request.Request
- func (c *Client) GET(ctx context.Context, path string) *request.Request
- func (c *Client) Multipart(ctx context.Context, path string) *formdata.Multipart
- func (c *Client) MultipartRequest(ctx context.Context, method, path string) *formdata.Multipart
- func (c *Client) PATCH(ctx context.Context, path string) *request.Request
- func (c *Client) POST(ctx context.Context, path string) *request.Request
- func (c *Client) PUT(ctx context.Context, path string) *request.Request
- func (c *Client) Request(ctx context.Context, method, path string) *request.Request
- func (c *Client) SetTransport(rt http.RoundTripper) *Client
- func (c *Client) Use(middleware func(http.RoundTripper) http.RoundTripper) *Client
- func (c *Client) WithCircuitBreaker() *Client
- func (c *Client) WithCircuitBreakerConfig(config CircuitBreakerConfig) *Client
- func (c *Client) WithLogger(logger Logger) *Client
- func (c *Client) WithRateLimit(capacity int, refillRate time.Duration) *Client
- func (c *Client) WithRetry() *Client
- func (c *Client) WithRetryConfig(config RetryConfig) *Client
- type Logger
- type Multipart
- type RateLimiter
- type Request
- type RetryConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CircuitBreakerMiddleware ¶ added in v1.8.1
func CircuitBreakerMiddleware(cb *CircuitBreaker) func(http.RoundTripper) http.RoundTripper
CircuitBreakerMiddleware returns a middleware that implements circuit breaker
func LoggingMiddleware ¶ added in v1.8.1
func LoggingMiddleware(logger Logger) func(http.RoundTripper) http.RoundTripper
LoggingMiddleware returns a middleware that logs requests and responses
func RateLimitMiddleware ¶ added in v1.8.1
func RateLimitMiddleware(limiter *RateLimiter) func(http.RoundTripper) http.RoundTripper
RateLimitMiddleware returns a middleware that enforces rate limiting
func RetryMiddleware ¶ added in v1.8.1
func RetryMiddleware(config RetryConfig) func(http.RoundTripper) http.RoundTripper
RetryMiddleware returns a middleware that retries requests based on the config
Types ¶
type CircuitBreaker ¶ added in v1.8.1
type CircuitBreaker = middleware.CircuitBreaker
CircuitBreaker implements a simple circuit breaker
func NewCircuitBreaker ¶ added in v1.8.1
func NewCircuitBreaker(config CircuitBreakerConfig) *CircuitBreaker
NewCircuitBreaker creates a new circuit breaker
type CircuitBreakerConfig ¶ added in v1.8.1
type CircuitBreakerConfig = middleware.CircuitBreakerConfig
CircuitBreakerConfig holds configuration for circuit breaker middleware
func DefaultCircuitBreakerConfig ¶ added in v1.8.1
func DefaultCircuitBreakerConfig() CircuitBreakerConfig
DefaultCircuitBreakerConfig returns a default circuit breaker configuration
type CircuitBreakerState ¶ added in v1.8.1
type CircuitBreakerState = middleware.CircuitBreakerState
CircuitBreakerState represents the state of the circuit breaker
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client wraps http.Client and provides request builders for different HTTP methods.
func NewClient ¶
NewClient creates a new HTTP client with the given base URL. Returns an error if the base URL is invalid.
func (*Client) Multipart ¶ added in v1.6.0
Multipart creates a multipart/form-data POST request builder.
func (*Client) MultipartRequest ¶ added in v1.8.1
MultipartRequest creates a multipart/form-data request builder with HTTP method.
func (*Client) SetTransport ¶ added in v1.8.1
func (c *Client) SetTransport(rt http.RoundTripper) *Client
SetTransport sets a custom base RoundTripper. This will be wrapped by middlewares.
func (*Client) Use ¶ added in v1.8.1
func (c *Client) Use(middleware func(http.RoundTripper) http.RoundTripper) *Client
Use adds a middleware to the client. Middlewares are applied in the order they are added. Each middleware is a function that takes a RoundTripper and returns a wrapped RoundTripper.
func (*Client) WithCircuitBreaker ¶ added in v1.8.1
WithCircuitBreaker adds circuit breaker middleware with default config
func (*Client) WithCircuitBreakerConfig ¶ added in v1.8.1
func (c *Client) WithCircuitBreakerConfig(config CircuitBreakerConfig) *Client
WithCircuitBreakerConfig adds circuit breaker middleware with custom config
func (*Client) WithLogger ¶ added in v1.8.2
WithLogger adds logging middleware with custom logger
func (*Client) WithRateLimit ¶ added in v1.8.1
WithRateLimit adds rate limiting middleware
func (*Client) WithRetryConfig ¶ added in v1.8.1
func (c *Client) WithRetryConfig(config RetryConfig) *Client
WithRetryConfig adds retry middleware with custom config
type Logger ¶ added in v1.8.2
type Logger = middleware.Logger
Logger interface for universal logging support
type RateLimiter ¶ added in v1.8.1
type RateLimiter = middleware.RateLimiter
RateLimiter implements a basic token bucket rate limiter
func NewRateLimiter ¶ added in v1.8.2
func NewRateLimiter(capacity int, refillRate time.Duration) *RateLimiter
NewRateLimiter creates a new rate limiter
type RetryConfig ¶ added in v1.8.1
type RetryConfig = middleware.RetryConfig
RetryConfig holds configuration for retry middleware
func DefaultRetryConfig ¶ added in v1.8.1
func DefaultRetryConfig() RetryConfig
DefaultRetryConfig returns a default retry configuration
Directories
¶
| Path | Synopsis |
|---|---|
|
examples
|
|
|
circuit_breaker_example
command
|
|
|
logger_custom_example
command
|
|
|
logger_slog_example
command
|
|
|
middleware_example
command
|
|
|
multipart_streaming_example
command
|
|
|
rate_limit_example
command
|
|
|
retry_example
command
|
|
|
internal
|
|