Files
fn_registry/functions/infra/http_middleware_chain.md
egutierrez c43322ecc0 feat: funciones puras HTTP — HTTPMiddlewareChain y HTTPCORSMiddleware
- HTTPMiddlewareChain: compone N middlewares preservando el orden (el primero es el mas externo)
- HTTPCORSMiddleware: genera Middleware con headers CORS configurables, maneja OPTIONS preflight con 204

Ambas son puras (sin I/O) y testeadas con httptest.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 01:57:39 +02:00

1.5 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
http_middleware_chain function go infra 1.0.0 pure func HTTPMiddlewareChain(middlewares ...Middleware) Middleware Compone N middlewares en uno solo. El primer middleware de la lista es el mas externo (se ejecuta primero en el request y ultimo en el response).
http
middleware
chain
compose
server
infra
Middleware_go_infra
Middleware_go_infra
false
net/http
name desc
middlewares lista variadic de middlewares a componer, aplicados de izquierda a derecha (el primero es el mas externo)
un Middleware unico que aplica todos los middlewares en orden true
sin middlewares pasa al handler final
un middleware se aplica correctamente
dos middlewares se aplican en orden izquierda-derecha
functions/infra/http_middleware_chain_test.go functions/infra/http_middleware_chain.go

Ejemplo

chain := HTTPMiddlewareChain(
    HTTPLoggerMiddleware(os.Stderr),
    HTTPCORSMiddleware([]string{"*"}, []string{"GET", "POST"}),
)
handler := chain(myHandler)
http.ListenAndServe(":8080", handler)

Notas

Funcion pura — solo combina funciones, sin I/O ni estado. La composicion es de derecha a izquierda internamente para que el primer middleware quede en la capa mas externa. Con cero middlewares retorna un Middleware identidad que no modifica el handler.