All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- None.
-
breaking: Added default limit to how much data
Bytes::from_request
will consume. Previously it would attempt to consume the entire request body without checking its length. This meant if a malicious peer sent an large (or infinite) request body your server might run out of memory and crash.The default limit is at 2 MB and can be disabled by adding the new
DefaultBodyLimit::disable()
middleware. See its documentation for more details.This also applies to
String
which usedBytes::from_request
internally.(#1346)
- breaking:
FromRequest
has been reworked andRequestParts
has been removed. See axum's changelog for more details (#1272) - added: Added new
FromRequestParts
trait. See axum's changelog for more details (#1272) - breaking:
BodyAlreadyExtracted
has been removed (#1272)
- fix: Fix typos in
RequestParts
docs (#1147)
- change: axum-core's MSRV is now 1.56 (#1098)
- added: Automatically handle
http_body::LengthLimitError
inFailedToBufferBody
and map such errors to413 Payload Too Large
(#1048) - fixed: Use
impl IntoResponse
less in docs (#1049)
- added: Implement
IntoResponse
andIntoResponseParts
forhttp::Extensions
(#975) - added: Implement
IntoResponse
for(http::response::Parts, impl IntoResponse)
(#950) - added: Implement
IntoResponse
for(http::response::Response<()>, impl IntoResponse)
(#950) - added: Implement
IntoResponse for (Parts | Request<()>, $(impl IntoResponseParts)+, impl IntoResponse)
(#980)
- added: Add
response::ErrorResponse
andresponse::Result
forIntoResponse
-based error handling (#921)
- added: Add
AppendHeaders
for appending headers to a response rather than overriding them (#927)
- added: Add
RequestParts::extract
which allows applying an extractor as a method call (#897)
-
added: Add
IntoResponseParts
trait which allows defining custom response types for adding headers or extensions to responses (#797) -
breaking: Using
HeaderMap
as an extractor will no longer remove the headers and thus they'll still be accessible to other extractors, such asaxum::extract::Json
. InsteadHeaderMap
will clone the headers. You should prefer to useTypedHeader
to extract only the headers you need (#698)This includes these breaking changes:
RequestParts::take_headers
has been removed.RequestParts::headers
returns&HeaderMap
.RequestParts::headers_mut
returns&mut HeaderMap
.HeadersAlreadyExtracted
has been removed.- The
HeadersAlreadyExtracted
variant has been removed from these rejections:RequestAlreadyExtracted
RequestPartsAlreadyExtracted
<HeaderMap as FromRequest<_>>::Rejection
has been changed tostd::convert::Infallible
.
-
breaking:
axum::http::Extensions
is no longer an extractor (ie it doesn't implementFromRequest
). Theaxum::extract::Extension
extractor is not impacted by this and works the same. This change makes it harder to accidentally remove all extensions which would result in confusing errors elsewhere (#699) This includes these breaking changes:RequestParts::take_extensions
has been removed.RequestParts::extensions
returns&Extensions
.RequestParts::extensions_mut
returns&mut Extensions
.RequestAlreadyExtracted
has been removed.<Request as FromRequest>::Rejection
is nowBodyAlreadyExtracted
.<http::request::Parts as FromRequest>::Rejection
is nowInfallible
.ExtensionsAlreadyExtracted
has been removed.
-
breaking:
RequestParts::body_mut
now returns&mut Option<B>
so the body can be swapped (#869)
- added: Implement
IntoResponse
forbytes::BytesMut
andbytes::Chain<T, U>
(#767)
- added:
axum_core::response::Response
now exists as a shorthand for writingResponse<BoxBody>
(#590)
- Initial release.