fix(deps): update rust crate axum to 0.6.20 #7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.6.0-rc.1
->0.6.20
Release Notes
tokio-rs/axum (axum)
v0.6.20
: axum - v0.6.20Compare Source
WebSocketUpgrade::write_buffer_size
andWebSocketUpgrade::max_write_buffer_size
WebSocketUpgrade::max_send_queue
Handler
forT: IntoResponse
(#2140)v0.6.19
: axum - v0.6.19Compare Source
axum::extract::Query::try_from_uri
(#2058)IntoResponse
forBox<str>
andBox<[u8]>
(#2035).source()
of composite rejections (#2030)#[debug_handler]
(#2014)v0.6.18
: axum - v0.6.18Compare Source
Sec-WebSocket-Key
header inWebSocketUpgrade
(#1972)v0.6.17
: axum - v0.6.17Compare Source
CONNECT
requests (#1958)v0.6.16
: axum - v0.6.16Compare Source
MatchedPath
in fallbacks (#1934)Router
with something nested at/
was used as a fallback (#1934)Router::new().fallback(...)
isn't optimal (#1940)v0.6.15
: axum - v0.6.15Compare Source
v0.6.14
: axum - v0.6.14Compare Source
v0.6.13
: axum - v0.6.13Compare Source
axum::rejection=trace
target (#1890)Router::nest
introduced in0.6.0.
nest
now flattens the routes which performs better (#1711)MatchedPath
in nested handlers now gives the fullmatched path, including the nested path (#1711)
Deref
andDerefMut
for built-in extractors (#1922)v0.6.12
: axum - v0.6.12Compare Source
IntoResponse
forMultipartError
(#1861)v0.6.11
: axum - v0.6.11Compare Source
S: Debug
forimpl Debug for Router<S>
(#1836)v0.6.10
: axum - v0.6.10Compare Source
#[must_use]
attributes to types that do nothing unless used (#1809)TypedHeader
extractor (#1810)Router
via a dynamic library (#1806)v0.6.9
: axum - v0.6.9Compare Source
v0.6.8
: axum - v0.6.8Compare Source
Allow
missing from routers with middleware (#1773)KeepAlive::event
for customizing the event sent for SSE keep alive (#1729)v0.6.7
: axum - v0.6.7Compare Source
FormRejection::FailedToDeserializeFormBody
which is returnedif the request body couldn't be deserialized into the target type, as opposed
to
FailedToDeserializeForm
which is only for query parameters (#1683)MockConnectInfo
for settingConnectInfo
during tests (#1767)v0.6.6
: axum - v0.6.6Compare Source
MethodRouter
toRouter::fallback
(#1730)v0.6.5
: axum - v0.6.5Compare Source
#[debug_handler]
sometimes giving wrong borrow related suggestions (#1710)impl IntoResponse
as the return type from handler functions (#1736)v0.6.4
: axum - v0.6.4Compare Source
v0.6.3
: axum - v0.6.3Compare Source
IntoResponse
for&'static [u8; N]
and[u8; N]
(#1690)Path
support types usingserde::Deserializer::deserialize_any
(#1693)RawPathParams
(#1713)Clone
andService
foraxum::middleware::Next
(#1712)v0.6.2
: axum - v0.6.2Compare Source
body_text
andstatus
methods to built-in rejections (#1612)runtime
feature ofhyper
when usingtokio
(#1671)v0.6.1
: axum - v0.6.1Compare Source
Router::with_state
(#1580)v0.6.0
: axum - v0.6.0Compare Source
Routing
fixed: Nested routers are now allowed to have fallbacks (#1521):
The outer router's fallback will still apply if a nested router doesn't have
its own fallback:
breaking: The request
/foo/
no longer matches/foo/*rest
. If you wantto match
/foo/
you have to add a route specifically for that (#1086)For example:
breaking: Path params for wildcard routes no longer include the prefix
/
. e.g./foo.js
will match/*filepath
with a value offoo.js
, not/foo.js
(#1086)For example:
fixed: Routes like
/foo
and/*rest
are no longer consideredoverlapping.
/foo
will take priority (#1086)For example:
breaking: Automatic trailing slash redirects have been removed.
Previously if you added a route for
/foo
, axum would redirect calls to/foo/
to/foo
(or vice versa for/foo/
):Either explicitly add routes for
/foo
and/foo/
or useaxum_extra::routing::RouterExt::route_with_tsr
if you want the old behavior(#1119)
breaking:
Router::fallback
now only acceptsHandler
s (similarly towhat
get
,post
, etc. accept). Use the newRouter::fallback_service
forsetting any
Service
as the fallback (#1155)This fallback on 0.5:
Becomes this in 0.6
changed:
Router::nest
now only acceptsRouter
s, the general-purposeService
nesting method has been renamed tonest_service
(#1368)breaking: Allow
Error: Into<Infallible>
forRoute::{layer, route_layer}
(#924)breaking:
MethodRouter
now panics on overlapping routes (#1102)breaking:
Router::route
now only acceptsMethodRouter
s created withget
,post
, etc. Use the newRouter::route_service
for routing toany
Service
s (#1155)breaking: Adding a
.route_layer
onto aRouter
orMethodRouter
without any routes will now result in a panic. Previously, this just did
nothing. #1327
breaking:
RouterService
has been removed sinceRouter
now implementsService
when the state is()
. UseRouter::with_state
to provide thestate and get a
Router<()>
. Note thatRouterService
only existed in thepre-releases, not 0.5 (#1552)
Extractors
added: Added new type safe
State
extractor. This can be used withRouter::with_state
and gives compile errors for missing states, whereasExtension
would result in runtime errors (#1155)We recommend migrating from
Extension
toState
for sharing application state since that is more typesafe and faster. That is done by using
Router::with_state
andState
.This setup in 0.5
Becomes this in 0.6 using
State
:If you have multiple extensions, you can use fields on
AppState
and implementFromRef
:breaking: It is now only possible for one extractor per handler to consume
the request body. In 0.5 doing so would result in runtime errors but in 0.6 it
is a compile error (#1272)
axum enforces this by only allowing the last extractor to consume the
request.
For example:
This is done by reworking the
FromRequest
trait and introducing a newFromRequestParts
trait.If your extractor needs to consume the request body then you should implement
FromRequest
, otherwise implementFromRequestParts
.This extractor in 0.5:
Becomes this in 0.6:
For an example of how to write an extractor that accepts different
Content-Types
see the [parse-body-based-on-content-type
][parse-body-based-on-content-type] example.added:
FromRequest
andFromRequestParts
derive macro re-exports from[
axum-macros
][axum-macros] behind themacros
feature (#1352)added: Add
RequestExt
andRequestPartsExt
which adds conveniencemethods for running extractors to
http::Request
andhttp::request::Parts
(#1301)added:
JsonRejection
now displays the path at which a deserializationerror occurred (#1371)
added: Add
extract::RawForm
for accessing raw urlencoded query bytes or request body (#1487)fixed: Used
400 Bad Request
forFailedToDeserializeQueryString
rejections, instead of
422 Unprocessable Entity
(#1387)changed: The inner error of a
JsonRejection
is nowserde_path_to_error::Error<serde_json::Error>
. Previously it wasserde_json::Error
(#1371)changed: The default body limit now applies to the
Multipart
extractor (#1420)breaking:
ContentLengthLimit
has been removed. UseDefaultBodyLimit
instead (#1400)breaking:
RequestParts
has been removed as part of theFromRequest
rework (#1272)
breaking:
BodyAlreadyExtracted
has been removed (#1272)breaking: The following types or traits have a new
S
type paramwhich represents the state (#1155):
Router
, defaults to()
MethodRouter
, defaults to()
FromRequest
, no defaultHandler
, no defaultbreaking:
MatchedPath
can now no longer be extracted in middleware fornested routes. In previous versions it returned invalid data when extracted
from a middleware applied to a nested router.
MatchedPath
can still beextracted from handlers and middleware that aren't on nested routers (#1462)
breaking: Rename
FormRejection::FailedToDeserializeQueryString
toFormRejection::FailedToDeserializeForm
(#1496)Middleware
middleware::from_fn
functions (#1088)middleware::from_fn_with_state
to enable running extractors that requirestate (#1342)
middleware::from_extractor_with_state
(#1396)map_request
,map_request_with_state
for transforming therequest with an async function (#1408)
map_response
,map_response_with_state
for transforming theresponse with an async function (#1414)
IntoResponse
(#1152)extractor_middleware
which was previously deprecated.Use
axum::middleware::from_extractor
instead (#1077)Handler::layer
to haveInfallible
as the error type (#1152)Misc
simple-router-wasm
examplefor more details (#1382)
ServiceExt
with methods for turning anyService
into aMakeService
similarly toRouter::into_make_service
(#1302)From
impls have been added toextract::ws::Message
to be more inline with
tungstenite
(#1421)#[derive(axum::extract::FromRef)]
(#1430)accept_unmasked_frames
setting in WebSocketUpgrade (#1529)WebSocketUpgrade::on_failed_upgrade
to customize what to dowhen upgrading a connection fails (#1539)
#[track_caller]
so the errormessage points to where the user added the invalid route, rather than
somewhere internally in axum (#1248)
S: Service
, the bounds have beenrelaxed so the response type must implement
IntoResponse
rather than being aliteral
Response
tokio
default feature needed for WASM support. If youdon't need WASM support but have
default_features = false
for other reasonsyou likely need to re-enable the
tokio
feature (#1382)handler::{WithState, IntoService}
are merged into one type,named
HandlerService
(#1418)v0.6.0-rc.5
: axum - v0.6.0-rc.5Compare Source
breaking:
Router::with_state
is no longer a constructor. It is insteadused to convert the router into a
RouterService
(#1532)This nested router on 0.6.0-rc.4
Becomes this in 0.6.0-rc.5
breaking::
Router::inherit_state
has been removed. UseRouter::with_state
instead (#1532)breaking::
Router::nest
andRouter::merge
now only supports nestingrouters that use the same state type as the router they're being merged into.
Use
FromRef
for substates (#1532)added: Add
accept_unmasked_frames
setting in WebSocketUpgrade (#1529)fixed: Nested routers will now inherit fallbacks from outer routers (#1521)
added: Add
WebSocketUpgrade::on_failed_upgrade
to customize what to dowhen upgrading a connection fails (#1539)
v0.6.0-rc.4
: axum - v0.6.0-rc.4Compare Source
JsonRejection
is nowserde_path_to_error::Error<serde_json::Error>
. Previously it wasserde_json::Error
(#1371)JsonRejection
now displays the path at which a deserializationerror occurred too (#1371)
ContentLengthLimit
(#1389)400 Bad Request
forFailedToDeserializeQueryString
rejections, instead of
422 Unprocessable Entity
(#1387)middleware::from_extractor_with_state
andmiddleware::from_extractor_with_state_arc
(#1396)DefaultBodyLimit::max
for changing the default body limit (#1397)map_request
,map_request_with_state
, andmap_request_with_state_arc
for transforming the request with an asyncfunction (#1408)
map_response
,map_response_with_state
, andmap_response_with_state_arc
for transforming the response with an asyncfunction (#1414)
ContentLengthLimit
has been removed.Use DefaultBodyLimit
instead (#1400)Router
no longer implementsService
, call.into_service()
on it to obtain a
RouterService
that does (#1368)Router::inherit_state
, which creates aRouter
with anarbitrary state type without actually supplying the state; such a
Router
can't be turned into a service directly (
.into_service()
will panic), butcan be nested or merged into a
Router
with the same state type (#1368)Router::nest
now only acceptsRouter
s, the general-purposeService
nesting method has been renamed tonest_service
(#1368)simple-router-wasm
examplefor more details (#1382)
tokio
default feature needed for WASM support. If youdon't need WASM support but have
default_features = false
for other reasonsyou likely need to re-enable the
tokio
feature (#1382)handler::{WithState, IntoService}
are merged into one type,named
HandlerService
(#1418)Multipart
extractor (#1420)From
impls have been added toextract::ws::Message
to be more inline with
tungstenite
(#1421)#[derive(axum::extract::FromRef)]
([#1430])FromRequest
andFromRequestParts
derive macro re-exports from[
axum-macros
] behind themacros
feature (#1352)MatchedPath
can now no longer be extracted in middleware fornested routes (#1462)
extract::RawForm
for accessing raw urlencoded query bytes or request body (#1487)FormRejection::FailedToDeserializeQueryString
toFormRejection::FailedToDeserializeForm
(#1496)v0.6.0-rc.3
: axum - v0.6.0-rc.3Compare Source
Yanked, as it didn't compile in release mode.
v0.6.0-rc.2
: axum - v0.6.0.rc.2Compare Source
Security
breaking: Added default limit to how much data
Bytes::from_request
willconsume. 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 moredetails.
This also applies to these extractors which used
Bytes::from_request
internally:
Form
Json
String
Thanks to Shachar Menashe for reporting this vulnerability.
(#1346)
Routing
.route_layer
onto aRouter
orMethodRouter
without any routes will now result in a panic. Previously, this just did
nothing. #1327
Middleware
middleware::from_fn_with_state
andmiddleware::from_fn_with_state_arc
to enable running extractors that requirestate (#1342)
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.