Documentation
¶
Overview ¶
Package middleware is the umbrella for celeris's production-ready middleware catalog.
It declares no exported symbols of its own. Each piece of middleware lives in its own subpackage and exposes a New constructor returning a celeris.HandlerFunc (for example cors.New, jwt.New, ratelimit.New, compress.New). Install them at one of two points:
- Server.Use installs route middleware that runs after the router matches a request (logging, recovery, auth, CORS, rate limiting, compression, ...).
- Server.Pre installs pre-routing middleware that runs before matching and may mutate the request method, path, scheme, host, or client IP (proxy, redirect, rewrite, methodoverride). Pre-routing middleware that writes a response MUST return without calling c.Next().
Ordering matters: each layer should see the context the layers before it established. See the documentation hub below for the recommended install order, per-middleware configuration, and cross-cutting conventions (auth stacking, the Vary header contract, and how the observe/metrics/otel measurement systems relate).
Documentation ¶
Full guides and examples: https://goceleris.dev/docs/middleware
Directories
¶
| Path | Synopsis |
|---|---|
|
Package adapters bridges stdlib net/http middleware and handlers into celeris handler chains.
|
Package adapters bridges stdlib net/http middleware and handlers into celeris handler chains. |
|
Package basicauth provides HTTP Basic Authentication middleware for celeris.
|
Package basicauth provides HTTP Basic Authentication middleware for celeris. |
|
Package bodylimit provides request body size limiting middleware for celeris.
|
Package bodylimit provides request body size limiting middleware for celeris. |
|
Package cache provides a pluggable HTTP response cache middleware.
|
Package cache provides a pluggable HTTP response cache middleware. |
|
Package circuitbreaker provides circuit breaker middleware for celeris.
|
Package circuitbreaker provides circuit breaker middleware for celeris. |
|
compress
module
|
|
|
Package cors provides Cross-Origin Resource Sharing (CORS) middleware for Celeris.
|
Package cors provides Cross-Origin Resource Sharing (CORS) middleware for Celeris. |
|
Package csrf provides Cross-Site Request Forgery protection middleware for celeris using the double-submit cookie pattern, with optional server-side token storage for enhanced security.
|
Package csrf provides Cross-Site Request Forgery protection middleware for celeris using the double-submit cookie pattern, with optional server-side token storage for enhanced security. |
|
memcachedstore
Package memcachedstore provides a store.KV CSRF token backend built on the native celeris driver/memcached client.
|
Package memcachedstore provides a store.KV CSRF token backend built on the native celeris driver/memcached client. |
|
redisstore
Package redisstore provides a store.KV CSRF token backend built on the native celeris driver/redis client.
|
Package redisstore provides a store.KV CSRF token backend built on the native celeris driver/redis client. |
|
Package debug provides a debug/introspection middleware for celeris.
|
Package debug provides a debug/introspection middleware for celeris. |
|
Package etag provides ETag generation and conditional-response middleware for celeris.
|
Package etag provides ETag generation and conditional-response middleware for celeris. |
|
Package healthcheck provides Kubernetes-style health probe middleware for celeris.
|
Package healthcheck provides Kubernetes-style health probe middleware for celeris. |
|
Package idempotency implements the HTTP Idempotency-Key request pattern for Celeris.
|
Package idempotency implements the HTTP Idempotency-Key request pattern for Celeris. |
|
internal
|
|
|
extract
Package extract provides a shared token/value extractor for middleware that reads values from request headers, query parameters, cookies, form fields, or path parameters using a "source:name[:prefix]" lookup string format.
|
Package extract provides a shared token/value extractor for middleware that reads values from request headers, query parameters, cookies, form fields, or path parameters using a "source:name[:prefix]" lookup string format. |
|
fakememcached
Package fakememcached is a tiny text-protocol fake memcached server for middleware store-adapter tests.
|
Package fakememcached is a tiny text-protocol fake memcached server for middleware store-adapter tests. |
|
fakeredis
Package fakeredis is a tiny RESP2 fake server used by celeris middleware tests that adapt onto the native driver/redis client.
|
Package fakeredis is a tiny RESP2 fake server used by celeris middleware tests that adapt onto the native driver/redis client. |
|
fnv1a
Package fnv1a provides a fast, allocation-free FNV-1a string hash and power-of-two rounding for sharded data structures.
|
Package fnv1a provides a fast, allocation-free FNV-1a string hash and power-of-two rounding for sharded data structures. |
|
randutil
Package randutil provides a shared, buffered cryptographic random token generator that amortizes crypto/rand syscalls across middleware packages.
|
Package randutil provides a shared, buffered cryptographic random token generator that amortizes crypto/rand syscalls across middleware packages. |
|
sf
Package sf provides a tiny generic singleflight-style coalescer used internally by middlewares that need to dedupe concurrent in-flight producers for the same key (middleware/cache — and, potentially, future adapters).
|
Package sf provides a tiny generic singleflight-style coalescer used internally by middlewares that need to dedupe concurrent in-flight producers for the same key (middleware/cache — and, potentially, future adapters). |
|
testutil
Package testutil provides test helpers and assertions for middleware tests.
|
Package testutil provides test helpers and assertions for middleware tests. |
|
Package jwt provides JSON Web Token authentication middleware for celeris.
|
Package jwt provides JSON Web Token authentication middleware for celeris. |
|
internal/jwtparse
Package jwtparse implements a zero-allocation JWT parser and signer.
|
Package jwtparse implements a zero-allocation JWT parser and signer. |
|
jwtcache
Package jwtcache provides a convenience store.KV constructor for JWT middleware's JWKSCache option.
|
Package jwtcache provides a convenience store.KV constructor for JWT middleware's JWKSCache option. |
|
jwtmccache
Package jwtmccache provides a convenience store.KV constructor for JWT middleware's JWKSCache option backed by memcached.
|
Package jwtmccache provides a convenience store.KV constructor for JWT middleware's JWKSCache option backed by memcached. |
|
Package keyauth provides API key authentication middleware for celeris.
|
Package keyauth provides API key authentication middleware for celeris. |
|
Package logger provides HTTP request logging middleware for celeris.
|
Package logger provides HTTP request logging middleware for celeris. |
|
Package methodoverride provides HTTP method override middleware for celeris.
|
Package methodoverride provides HTTP method override middleware for celeris. |
|
metrics
module
|
|
|
otel
module
|
|
|
Package overload is a 5-stage CPU degradation ladder driven by observe.Collector.
|
Package overload is a 5-stage CPU degradation ladder driven by observe.Collector. |
|
Package pprof provides a middleware that exposes Go runtime profiling data via the standard net/http/pprof handlers.
|
Package pprof provides a middleware that exposes Go runtime profiling data via the standard net/http/pprof handlers. |
|
protobuf
module
|
|
|
Package proxy extracts the real client IP, scheme, and host from trusted reverse proxy headers.
|
Package proxy extracts the real client IP, scheme, and host from trusted reverse proxy headers. |
|
Package ratelimit provides token-bucket and sliding-window rate limiting middleware for Celeris.
|
Package ratelimit provides token-bucket and sliding-window rate limiting middleware for Celeris. |
|
memcachedstore
Package memcachedstore provides a memcached-backed ratelimit.Store (token-bucket) built on the native celeris driver/memcached client.
|
Package memcachedstore provides a memcached-backed ratelimit.Store (token-bucket) built on the native celeris driver/memcached client. |
|
redisstore
Package redisstore provides a Redis-backed ratelimit.Store (token-bucket) built on the native celeris driver/redis client.
|
Package redisstore provides a Redis-backed ratelimit.Store (token-bucket) built on the native celeris driver/redis client. |
|
Package recovery provides panic recovery middleware for celeris.
|
Package recovery provides panic recovery middleware for celeris. |
|
Package redirect provides HTTP redirect middleware for common URL normalization patterns in Celeris.
|
Package redirect provides HTTP redirect middleware for common URL normalization patterns in Celeris. |
|
Package requestid provides request ID middleware for celeris.
|
Package requestid provides request ID middleware for celeris. |
|
Package rewrite provides pre-routing URL rewrite middleware for celeris, matching the request path against ordered regular-expression rules.
|
Package rewrite provides pre-routing URL rewrite middleware for celeris, matching the request path against ordered regular-expression rules. |
|
Package secure provides OWASP security headers middleware for celeris.
|
Package secure provides OWASP security headers middleware for celeris. |
|
Package session provides server-side session management middleware for celeris.
|
Package session provides server-side session management middleware for celeris. |
|
memcachedstore
Package memcachedstore provides a store.KV session backend built on the native celeris driver/memcached client.
|
Package memcachedstore provides a store.KV session backend built on the native celeris driver/memcached client. |
|
postgresstore
Package postgresstore provides a store.KV session backend built on the native celeris driver/postgres client.
|
Package postgresstore provides a store.KV session backend built on the native celeris driver/postgres client. |
|
redisstore
Package redisstore provides a store.KV session backend built on the native celeris driver/redis client.
|
Package redisstore provides a store.KV session backend built on the native celeris driver/redis client. |
|
Package singleflight provides request-coalescing middleware for celeris.
|
Package singleflight provides request-coalescing middleware for celeris. |
|
Package sse provides Server-Sent Events (SSE) middleware for celeris.
|
Package sse provides Server-Sent Events (SSE) middleware for celeris. |
|
Package static serves static files from the OS filesystem or an fs.FS.
|
Package static serves static files from the OS filesystem or an fs.FS. |
|
Package store defines the unified byte-level key-value interface shared by celeris middleware (session, csrf, cache, idempotency, SSE replay).
|
Package store defines the unified byte-level key-value interface shared by celeris middleware (session, csrf, cache, idempotency, SSE replay). |
|
Package swagger provides OpenAPI specification viewer middleware for celeris.
|
Package swagger provides OpenAPI specification viewer middleware for celeris. |
|
Package timeout provides request timeout middleware for celeris.
|
Package timeout provides request timeout middleware for celeris. |
|
Package websocket provides a zero-dependency native WebSocket middleware for celeris, implementing RFC 6455.
|
Package websocket provides a zero-dependency native WebSocket middleware for celeris, implementing RFC 6455. |