package lazydispatch ¶
import "golazy.dev/lazydispatch"
Functions ¶
func ApplyETag ¶
ApplyETag adds or validates an ETag for an eligible buffered response.
func ApplyETag(w *BufferedResponseWriter, r *http.Request)
func MethodNotAllowed ¶
func MethodNotAllowed(allowed ...string) http.Handler
func ReleaseBufferedResponseWriter ¶
ReleaseBufferedResponseWriter resets and releases a writer acquired from AcquireBufferedResponseWriter.
func ReleaseBufferedResponseWriter(w *BufferedResponseWriter)
Types ¶
type BufferedResponseWriter ¶
BufferedResponseWriter is a response writer whose headers and body can be reset.
type BufferedResponseWriter struct {
// contains filtered or unexported fields
}
func AcquireBufferedResponseWriter ¶
AcquireBufferedResponseWriter returns a pooled buffered response writer.
Callers must pass the returned writer to ReleaseBufferedResponseWriter after the request path no longer needs it.
func AcquireBufferedResponseWriter(w http.ResponseWriter) *BufferedResponseWriter
func NewBufferedResponseWriter ¶
func NewBufferedResponseWriter(w http.ResponseWriter) *BufferedResponseWriter
func (w *BufferedResponseWriter) Flush ¶
func (w *BufferedResponseWriter) Flush() error
func (w *BufferedResponseWriter) Header ¶
func (w *BufferedResponseWriter) Header() http.Header
func (w *BufferedResponseWriter) Reset ¶
func (w *BufferedResponseWriter) Reset()
func (w *BufferedResponseWriter) StartStream ¶
StartStream commits the buffered headers and lets callers write directly to the wrapped response writer.
func (w *BufferedResponseWriter) StartStream(status int) (http.ResponseWriter, error)
func (w *BufferedResponseWriter) Unwrap ¶
func (w *BufferedResponseWriter) Unwrap() http.ResponseWriter
func (w *BufferedResponseWriter) WasResponseSent ¶
func (w *BufferedResponseWriter) WasResponseSent() bool
func (w *BufferedResponseWriter) Write ¶
func (w *BufferedResponseWriter) Write(data []byte) (int, error)
func (w *BufferedResponseWriter) WriteHeader ¶
func (w *BufferedResponseWriter) WriteHeader(status int)
type Dispatcher ¶
type Dispatcher struct {
// contains filtered or unexported fields
}
func NewDispatcher ¶
func NewDispatcher() *Dispatcher
func (d *Dispatcher) Handler ¶
func (d *Dispatcher) Handler(next http.Handler) http.Handler
func (d *Dispatcher) ServeHTTP ¶
func (d *Dispatcher) ServeHTTP(w http.ResponseWriter, r *http.Request)
func (d *Dispatcher) Use ¶
func (d *Dispatcher) Use(middleware Middleware)
type Middleware ¶
type Middleware interface {
Handler(next http.Handler) http.Handler
}
func ETag ¶
ETag adds conditional response handling for buffered dynamic responses.
func ETag() Middleware
func Public ¶
func Public(files fs.FS) Middleware
func ResponseBuffer ¶
ResponseBuffer delays sending a response until the downstream handler returns.
func ResponseBuffer() Middleware
func RouteOnly ¶
RouteOnly applies middlewares only to requests handled by router.
func RouteOnly(router RouteHandler, middlewares ...Middleware) Middleware
func Router ¶
func Router(router RouteHandler) Middleware
func Static ¶
func Static(files fs.FS) Middleware
type MiddlewareFunc ¶
type MiddlewareFunc func(http.Handler) http.Handler
func (fn MiddlewareFunc) Handler ¶
func (fn MiddlewareFunc) Handler(next http.Handler) http.Handler
func (MiddlewareFunc) MiddlewareName ¶
func (MiddlewareFunc) MiddlewareName() string
type RouteHandler ¶
type RouteHandler interface {
http.Handler
HandlesPath(path string) bool
}
Directories ¶
| Path | Synopsis |
|---|---|
| lazydispatch/middlewares | Package middlewares contains request middleware used by GoLazy dispatch. |
Package lazydispatch owns request middleware dispatch for GoLazy.
lazyapp builds the normal dispatcher chain: route-only middleware for controller responses, session persistence, application middleware, generated metadata endpoints, route dispatch, and public assets. Most applications should configure middleware through lazyapp.Config instead of assembling this package directly.
Use lazydispatch directly when composing a custom http.Handler stack with the same small middleware interface, route-only middleware, dynamic route lifecycle helpers, or static fallback behavior.