Added
- Multi-body parameter support following FastAPI semantics: multiple body parameters are automatically embedded by name,
Body(embed=True)supported for single parameters
Fixed
- GET + Pydantic model now correctly reads query params instead of body at runtime
- Aiohttp multipart reader no longer consumed twice — form fields and files parsed in a single pass with caching
- Falcon async router binary/text responses now use proper content-type branching (was forcing
response.mediafor all) - Async DI resolver no longer holds
threading.Lockacrossawait— removed unnecessary lock since async is single-threaded per event loop - Tornado cookies now extracted as strings instead of
Morselobjects - 204 responses now preserve custom headers from tuple returns and
Responseobjects - OpenAPI schema invalidated after
add_route/include_router— no more stale schema if accessed before all routes are registered - JSON array in request body returns 422 instead of 500 when endpoint expects a single Pydantic model
- DI cache reliability improvements
- Error hierarchy backward compatibility fixes