Skip to content

Middleware Reference

Marten includes 12 production-ready middleware components.

Overview

Middleware Purpose Import
Logger Request logging middleware.Logger
Recover Panic recovery middleware.Recover
CORS Cross-origin requests middleware.CORS(cfg)
RateLimit Rate limiting middleware.RateLimit(cfg)
BasicAuth Basic authentication middleware.BasicAuth(cfg)
Timeout Request timeouts middleware.Timeout(duration)
Secure Security headers middleware.Secure(cfg)
BodyLimit Request size limits middleware.BodyLimit(size)
Compress Gzip compression middleware.Compress(cfg)
ETag Response caching middleware.ETag
RequestID Request tracking middleware.RequestID
NoCache Cache prevention middleware.NoCache

Quick Start

import (
    "github.com/gomarten/marten"
    "github.com/gomarten/marten/middleware"
)

func main() {
    app := marten.New()

    // Recommended middleware stack
    app.Use(
        middleware.RequestID,                           // Track requests
        middleware.Logger,                              // Log requests
        middleware.Recover,                             // Catch panics
        middleware.Secure(middleware.DefaultSecureConfig()), // Security headers
        middleware.CORS(middleware.DefaultCORSConfig()),     // CORS
        middleware.BodyLimit(10 * middleware.MB),       // Limit body size
    )

    // ...
}
app.Use(
    middleware.RequestID,  // 1. Assign ID first for tracking
    middleware.Logger,     // 2. Log with request ID
    middleware.Recover,    // 3. Catch panics
    middleware.Secure,     // 4. Set security headers
    middleware.CORS,       // 5. Handle CORS
    middleware.RateLimit,  // 6. Reject excess requests early
    middleware.BodyLimit,  // 7. Reject large requests early
    middleware.Compress,   // 8. Compress responses
    middleware.Timeout,    // 9. Enforce timeouts
)

Creating Custom Middleware

See the Middleware Guide for details on creating custom middleware.