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
)
// ...
}
Recommended Order¶
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.