#What it is
A high-performance HTTP router for Go built on a radix tree, with zero allocations for parameter extraction, and with typed handlers that generate their own documentation.
#Opinionated handlers
Declare the request as a struct with path, query and json tags, and Steel binds and validates it, then generates OpenAPI 3.0 from the same types. There is no second description of the endpoint to fall out of date.
1r.OpinionatedGET("/users/:id", func(ctx *steel.Context, req User) (*UserResponse, error) {2 return &UserResponse{ID: req.ID, Name: req.Name}, nil3}, steel.WithSummary("Get User"), steel.WithTags("users"))45r.EnableOpenAPI()
#The rest
WebSocket and SSE support with AsyncAPI documentation, middleware with built-in recovery, logging and timeout, testing utilities with request builders and assertions, and doc UIs across Swagger, ReDoc, Scalar and Stoplight Elements.
Steel came before Forge by two days and Forge's router grew directly out of it. It is still useful on its own when you want the routing and the generated spec without the framework.