- allow deserializing of application/json subtypes: application/some-subtype+json
- fixed direct mapping path for subrouter root entry
- removed multipart/form-data support as cgi module is deprecated. Use external library for this
- do not cache Request.form, Request.json, Request.method and Request.query_parameters properties
- IntPathParameter matches value using isdecimal()
- Cache-Control public directive support for responses
- pypy3 supported
- Cache-Control header support for responses
- ETag handling (strong -> weak) for compressed responses
- changed typing info for readonly dicts to Mapping
- defaults for handler parameters are type-checked
- defaults are only allowed for handler parameters which do not get values from path/query string/body
- handler parameter types can wrapped with Annotated
- removed WsgiAppConfig.logger configuration. Override error_handler to change unhandled exception logging behaviour
- removed WsgiAppConfig.json_result_handler configuration
- do not concatenate compressed result parts
- added more typing info
- binding tests/examples using marshmallow and pydantic
- configurable compression level. Lowered default level from 6 to 2.
- route paths must always start with /
- made route options again accessible in before_request hook (broken in 0.3.0)
- pass dataclass object to json serializer, do not convert it to dict too early. Possible performance gain with serializers which support native dataclass serialization.
- added compression support for responses. By default enabled for application/json
- Accept header negotiation now uses quality value too (type with q=0 is ignored)
- fixed handling of Body and Query annotated parameters when PEP-563 is enabled
- renamed configuration parameter max_content_length to max_request_content_length
- shortcut route decorators for HTTP methods DELETE, GET, PATCH, POST, PUT
- multiple mime types supported in consumes parameter when defining route
- Query and Body binding markers are now Annotated aliases. For python < 3.9 this requires external dependency typing_extensions.
- removed knowledge about request handling details inside PathRouter
- PathRouter returns routes using generator
- do not store route_path used for endpoint handler registration
- added direct route_path, endpoint mapping for handlers without path parameters
- support Request subclasses as type hints for handler wsgi environ wrapper parameter
- python 3.10 supported
- initial release