A composable framework for writing HTTP handlers in Go with typed URL parameters and middleware chains.
Siesta is a Go framework for building composable HTTP handlers. It provides a uniform approach to middleware and handlers, supporting typed URL parameters, context passing, and service-based routing to simplify the development of organized HTTP services.
Go developers building HTTP services or APIs who need a lightweight, composable framework for structuring middleware and handlers with type-safe routing.
Developers choose Siesta for its emphasis on composition and simplicity, treating middleware and handlers uniformly with a single function signature, and for its utilities like typed URL parameters that enhance type safety over alternatives.
Composable framework for writing HTTP handlers in Go.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Middleware and handlers share the same function signature, enabling easy chaining with siesta.Compose, as shown in the simple example where timestamper and timeHandler are composed.
Provides utilities similar to Go's flag package for managing typed route variables, reducing runtime errors in parameter parsing, referenced in the params example.
The Context argument allows data like timestamps to be passed through middleware chains, demonstrated in the timestamper handler that sets and retrieves values.
Uses the Service type to structure middleware and handlers under a base URI, improving modularity and routing clarity, as seen in the main example.
The README states that pull requests for new features are rejected, recommending forking instead, indicating potential stagnation and limited future enhancements.
Lacks common web framework features such as authentication helpers, input validation, or templating, requiring additional manual implementation or third-party libraries.
Compared to popular frameworks like Gin or Echo, Siesta has fewer third-party middleware options and community tools, which can increase development overhead for complex needs.