Releases: tokio-rs/axum
Releases · tokio-rs/axum
axum v0.8.0
since rc.1
- breaking:
axum::extract::ws::Message
now usesBytes
in place ofVec<u8>
,
and a newUtf8Bytes
type in place ofString
, for its variants (#3078) - breaking: Remove
OptionalFromRequestParts
impl forQuery
(#3088) - changed: Upgraded
tokio-tungstenite
to 0.26 (#3078) - changed: Query/Form: Use
serde_path_to_error
to report fields that failed to parse (#3081)
full changelog
Note: there are further relevant changes in axum-core's changelog
- breaking: Upgrade matchit to 0.8, changing the path parameter syntax from
/:single
and/*many
to/{single}
and/{*many}
; the old syntax produces a panic to avoid silent change in behavior (#2645) - breaking: Require
Sync
for all handlers and services added toRouter
andMethodRouter
(#2473) - breaking: The tuple and tuple_struct
Path
extractor deserializers now check that the number of parameters matches the tuple length exactly (#2931) - breaking: Move
Host
extractor toaxum-extra
(#2956) - breaking: Remove
WebSocket::close
. Users should explicitly send close messages themselves. (#2974) - breaking: Make
serve
generic over the listener and IO types (#2941) - breaking: Remove
Serve::tcp_nodelay
andWithGracefulShutdown::tcp_nodelay
.
Seeserve::ListenerExt
for an API that let you set arbitrary TCP stream properties. (#2941) - breaking:
Option<Path<T>>
no longer swallows all error conditions,
instead rejecting the request in many cases; see its documentation for details (#2475) - breaking:
axum::extract::ws::Message
now usesBytes
in place ofVec<u8>
,
and a newUtf8Bytes
type in place ofString
, for its variants (#3078) - fixed: Skip SSE incompatible chars of
serde_json::RawValue
inEvent::json_data
(#2992) - fixed: Don't panic when array type is used for path segment (#3039)
- fixed: Avoid setting
content-length
before middleware.
This allows middleware to add bodies to requests without needing to manually setcontent-length
(#2897) - change: Update minimum rust version to 1.75 (#2943)
- changed: Upgraded
tokio-tungstenite
to 0.26 (#3078) - changed: Query/Form: Use
serde_path_to_error
to report fields that failed to parse (#3081) - added: Add
method_not_allowed_fallback
to set a fallback when a path matches but there is no handler for the given HTTP method (#2903) - added: Add
NoContent
as a self-described shortcut forStatusCode::NO_CONTENT
(#2978) - added: Add support for WebSockets over HTTP/2. They can be enabled by changing
get(ws_endpoint)
handlers toany(ws_endpoint)
(#2894) - added: Add
MethodFilter::CONNECT
,routing::connect[_service]
andMethodRouter::connect[_service]
(#2961) - added: Extend
FailedToDeserializePathParams::kind
enum with (ErrorKind::DeserializeError
). This new variant captures bothkey
,value
, andmessage
from named path parameters parse errors, instead of only deserialization error message inErrorKind::Message
. (#2720)
axum-macros - v0.5.0
No changes since alpha.1
full changelog
- breaking: Update code generation for axum-core 0.5.0
- change: Update minimum rust version to 1.75 (#2943)
axum-extra v0.10.0
since rc.1
full changelog
- breaking: Update to prost 0.13. Used for the
Protobuf
extractor (#2829) - changed: Update minimum rust version to 1.75 (#2943)
- changed: Deprecated
OptionalPath<T>
(#2475) - changed: Query/Form: Use
serde_path_to_error
to report fields that failed to parse (#3081) - changed: The
multipart
feature is no longer on by default (#3058) - fixed:
Host
extractor includes port number when parsing authority (#2242) - added: Add
RouterExt::typed_connect
(#2961) - added: Add
json!
for easy construction of JSON responses (#2962) - added: Add
InternalServerError
response for logging an internal error and returning HTTP 500 in a convenient way. (#3010) - added: Add
FileStream
for easy construction of file stream responses (#3047) - added: Add
Scheme
extractor (#2507)
axum-core v0.5.0
since rc.1
- change: The
Display
impl of all rejections generated by thedefine_rejection!()
will now include theDisplay
output of the inner error too. This matches thebody_text()
fn output now. (#3118)
full changelog
- breaking: Replace
#[async_trait]
with return-positionimpl Trait
in traits (#2308) - breaking::
Option<T>
as an extractor now requiresT
to implement the new traitOptionalFromRequest
(if used as the last extractor) orOptionalFromRequestParts
(other extractors) (#2475) - change: Update minimum rust version to 1.75 (#2943)
- change: The
Display
impl of all rejections generated by thedefine_rejection!()
will now include theDisplay
output of the inner error too. This matches thebody_text()
fn output now. (#3118)
axum v0.8.0-rc.1
Note: there are further relevant changes in axum-core's changelog.
Since v0.8.0-alpha.1:
- breaking: Move
Host
extractor toaxum-extra
(#2956) - breaking: Remove
WebSocket::close
.
Users should explicitly send close messages themselves. (#2974) - breaking: Make
serve
generic over the listener and IO types (#2941) - breaking: Remove
Serve::tcp_nodelay
andWithGracefulShutdown::tcp_nodelay
.
Seeserve::ListenerExt
for an API that let you set arbitrary TCP stream properties. (#2941) - breaking:
Option<Path<T>>
andOption<Query<T>>
no longer swallow all error conditions,
instead rejecting the request in many cases; see their documentation for details (#2475) - fixed: Skip SSE incompatible chars of
serde_json::RawValue
inEvent::json_data
(#2992) - fixed: Don't panic when array type is used for path segment (#3039)
- fixed: Avoid setting
content-length
before middleware.
This allows middleware to add bodies to requests without needing to manually setcontent-length
(#2897) - added: Add
method_not_allowed_fallback
to set a fallback when a path matches but there is no handler for the given HTTP method (#2903) - added: Add
NoContent
as a self-described shortcut forStatusCode::NO_CONTENT
(#2978) - added: Add support for WebSockets over HTTP/2.
They can be enabled by changingget(ws_endpoint)
handlers toany(ws_endpoint)
(#2894) - added: Add
MethodFilter::CONNECT
,routing::connect[_service]
andMethodRouter::connect[_service]
(#2961) - added: Extend
FailedToDeserializePathParams::kind
enum with (ErrorKind::DeserializeError
)
This new variant captures bothkey
,value
, andmessage
from named path parameters parse errors,
instead of only deserialization error message inErrorKind::Message
. (#2720)
axum-extra v0.10.0-rc.1
Since v0.10.0-alpha.1:
- breaking:
Option<Query<T>>
no longer swallows all error conditions, instead rejecting the
request in many cases; see its documentation for details (#2475) - changed: Deprecated
OptionalPath<T>
andOptionalQuery<T>
(#2475) - fixed:
Host
extractor includes port number when parsing authority (#2242) - changed: The
multipart
feature is no longer on by default (#3058) - added: Add
RouterExt::typed_connect
(#2961) - added: Add
json!
for easy construction of JSON responses (#2962) - added: Add
InternalServerError
response for logging an internal error
and returning HTTP 500 in a convenient way. (#3010) - added: Add
FileStream
for easy construction of file stream responses (#3047)
axum-core - v0.5.0-rc.1
Since v0.5.0-alpha.1:
- breaking::
Option<T>
as an extractor now requiresT
to implement the
new traitOptionalFromRequest
(if used as the last extractor) or
OptionalFromRequestParts
(other extractors) (#2475)
axum - v0.7.9
- fixed: Avoid setting content-length before middleware (#3031)
axum-extra - v0.9.6
- docs: Add links to features table (#3030)
axum - v0.7.8
- fixed: Skip SSE incompatible chars of
serde_json::RawValue
inEvent::json_data
(#2992) - added: Add
method_not_allowed_fallback
to set a fallback when a path matches but there is no handler for the given HTTP method (#2903) - added: Add
MethodFilter::CONNECT
,routing::connect[_service]
andMethodRouter::connect[_service]
(#2961) - added: Add
NoContent
as a self-described shortcut forStatusCode::NO_CONTENT
(#2978)