contract
Generated API projects use this package to compile Go field tags once and bind
each request without depending on a specific HTTP server. New[T] validates a
struct and returns an immutable Binder. ForType provides the same compiler to
the CLI. BodySchema, Parameters, and ResponseSchema return detached OpenAPI
snapshots. MustNew[T] is intended for generated, already checked declarations.
type Request struct {
ID int64 `path:"id,range=[1:100]"`
Name string `json:"name" binding:"required,max=50"`
}
var request = contract.MustNew[Request]()
func Handle(c *httpx.Context) error {
var req Request
if err := request.Bind(c.Request(), httpx.RouteParams(c.Context()), &req); err != nil {
return err
}
return c.OK(req.Name)
}
The default body limit is 1 MiB. An optional positive final argument to Bind
overrides it. Application transport read timeouts still control slow clients.
See API.md for source tags, validation rules, null/presence behavior,
strict decoding and supported type limits. This API leaves the existing
Context.BindJSON/BindQuery/BindURI behavior unchanged.