Skip to content

API Reference

HTTPC provides 26 request option functions, 5 configuration presets, 8 built-in middlewares, and complete download support.

Core Architecture

text
httpc package
├── Client interface - Main client, supports all HTTP methods
├── DomainClienter interface - Domain-scoped client with built-in session management
├── Config - Configuration system (timeout/connection/security/retry/middleware)
├── RequestOption - 26 request option functions
├── MiddlewareFunc - Middleware chain
├── Result - Response result (includes request metadata)
└── Package-level functions - Use without creating a client

Module Navigation

Core

ModuleDescription
Package FunctionsGet/Post/Put/Patch/Delete and other package-level functions, client methods, and helper functions
ConfigurationConfig struct, 5 preset configurations, validation functions, and Cookie security
InterfacesClient, Doer, DomainClienter, RetryPolicy, and other core interfaces
ResultResult, RequestInfo, ResponseInfo, RequestMeta types and all methods

Request and Response

ModuleDescription
Request Options26 WithXxx request option functions (headers, body, auth, cookies, callbacks, etc.)
MiddlewareChain composition, 8 built-in middleware factories, and audit event types
Error TypesClientError, 12 ErrorType enums, and 13 error variables

Advanced Features

ModuleDescription
Domain ClientDomainClient creation, HTTP methods, download methods, and URL joining rules
Session ManagementSessionManager cookie/header management and security validation
File DownloadDownload functions, DownloadConfig, resume support, and security protections
Constants and TypesBodyKind enum, FormData/FileData, and audit context keys

Quick Reference

Creating a Client

go
client, err := httpc.New()                    // Default configuration
client, err := httpc.New(httpc.SecureConfig()) // Secure preset
client, err := httpc.New(customConfig)         // Custom configuration

Sending Requests

go
// Package-level function
result, err := httpc.Get(url, options...)

// Client method
result, err := client.Get(url, options...)

// With context
result, err := client.Request(ctx, "GET", url, options...)

Handling Responses

go
result.StatusCode()           // Status code
result.Body()                 // Response body (string)
result.RawBody()              // Response body (bytes)
result.Unmarshal(&data)       // JSON parsing
result.IsSuccess()            // Is 2xx
result.Meta.Duration          // Request duration
result.Meta.Attempts          // Retry count
defer httpc.ReleaseResult(result) // Release to object pool