Skip to content

http ​

HTTP utilities for request/response handling, reverse proxy, and WebSocket support.

Overview ​

The http package provides comprehensive HTTP utilities.

API Reference ​

Body Reading ​

go
func ReadAllBody(resp *http.Response) (b []byte, release func([]byte), err error)

Content Type ​

go
func DetectContentType(data []byte) string
func GetExtension(contentType string) string

Interceptors ​

go
func InterceptRequest(handler http.Handler, interceptors ...func(*http.Request)) http.Handler
func InterceptResponse(handler http.Handler, interceptors ...func(http.ResponseWriter)) http.Handler

Reverse Proxy ​

go
func NewReverseProxy(director func(*http.Request)) *ReverseProxy
func (p *ReverseProxy) WithH2C() *ReverseProxy

WebSocket ​

go
type Manager struct {
    func NewManager(handler http.Handler) *Manager
    func (m *Manager) Upgrade(w http.ResponseWriter, r *http.Request) (*Conn, error)
}

type Conn struct {
    func Read() ([]byte, error)
    func Write([]byte) error
    func Close() error
}

Usage ​

go
// Read body with buffer pooling
body, release, _ := httputils.ReadAllBody(resp)
defer release(body)

// Request interceptor
intercepted := httputils.InterceptRequest(handler, func(r *http.Request) {
    r.Header.Set("Authorization", "Bearer token")
})

// WebSocket
manager := websocket.NewManager(nil)
conn, _ := manager.Upgrade(w, r)
conn.Write([]byte("hello"))

Released under the MIT License.