fix(deps): update rust crate axum to 0.8.0 #128
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.5.17→0.8.0Release Notes
tokio-rs/axum (axum)
v0.8.8: axum v0.8.8Compare Source
Router::route_layer(#3567)v0.8.7: axum v0.8.7Compare Source
Send/Syncbounds onRouterAsService,RouterIntoService(#3555)v0.8.6Compare Source
v0.8.5: axum v0.8.5Compare Source
OptionalFromRequestforMultipart(#3220)Location::{status_code, location}middleware::ResponseAxumBodyLayerfor mapping response body toaxum::body::Body(#3469)impl FusedStream for WebSocket(#3443)ssemodule andSsetype no longer depend on thetokiofeature (#3154)Redirects constructors is not a valid header value, instead of panicking on construction, theIntoResponseimpl now returns an HTTP 500, just likeJsondoes when serialization fails (#3377)v0.8.4: axum v0.8.4Compare Source
Router::reset_fallback(#3320)WebSocketUpgrade::selected_protocol(#3248)servewithout graceful shutdown (#3129)v0.8.3: axum v0.8.3Compare Source
From<Bytes>forMessage(#3273)OptionalFromRequestforJson(#3142)OptionalFromRequestforExtension(#3157)WebSocketUpgrade(#3178)v0.8.2: axum v0.8.2Yanked from crates.io due to unforeseen breaking change, see #3190 for details
OptionalFromRequestforJson(#3142)OptionalFromRequestforExtension(#3157)statusfunction of rejections aconstfunction, suchas
JsonRejection,QueryRejectionandPathRejection(#3168)v0.8.0: axum v0.8.0Compare Source
since rc.1
Details
axum::extract::ws::Messagenow usesBytesin place ofVec<u8>,and a new
Utf8Bytestype in place ofString, for its variants (#3078)OptionalFromRequestPartsimpl forQuery(#3088)tokio-tungsteniteto 0.26 (#3078)serde_path_to_errorto report fields that failed to parse (#3081)full changelog
You can also read the blog post on tokio
Note: there are further relevant changes in axum-core's changelog
/:singleand/*manyto/{single}and/{*many}; the old syntax produces a panic to avoid silent change in behavior (#2645)Syncfor all handlers and services added toRouterandMethodRouter(#2473)Pathextractor deserializers now check that the number of parameters matches the tuple length exactly (#2931)Hostextractor toaxum-extra(#2956)WebSocket::close. Users should explicitly send close messages themselves. (#2974)servegeneric over the listener and IO types (#2941)Serve::tcp_nodelayandWithGracefulShutdown::tcp_nodelay.See
serve::ListenerExtfor an API that let you set arbitrary TCP stream properties. (#2941)Option<Path<T>>no longer swallows all error conditions,instead rejecting the request in many cases; see its documentation for details (#2475)
axum::extract::ws::Messagenow usesBytesin place ofVec<u8>,and a new
Utf8Bytestype in place ofString, for its variants (#3078)serde_json::RawValueinEvent::json_data(#2992)content-lengthbefore middleware.This allows middleware to add bodies to requests without needing to manually set
content-length(#2897)tokio-tungsteniteto 0.26 (#3078)serde_path_to_errorto report fields that failed to parse (#3081)method_not_allowed_fallbackto set a fallback when a path matches but there is no handler for the given HTTP method (#2903)NoContentas a self-described shortcut forStatusCode::NO_CONTENT(#2978)get(ws_endpoint)handlers toany(ws_endpoint)(#2894)MethodFilter::CONNECT,routing::connect[_service]andMethodRouter::connect[_service](#2961)FailedToDeserializePathParams::kindenum with (ErrorKind::DeserializeError). This new variant captures bothkey,value, andmessagefrom named path parameters parse errors, instead of only deserialization error message inErrorKind::Message. (#2720)v0.7.9: axum - v0.7.9Compare Source
v0.7.8: axum - v0.7.8Compare Source
serde_json::RawValueinEvent::json_data(#2992)method_not_allowed_fallbackto set a fallback when a path matches but there is no handler for the given HTTP method (#2903)MethodFilter::CONNECT,routing::connect[_service]and
MethodRouter::connect[_service](#2961)NoContentas a self-described shortcut forStatusCode::NO_CONTENT(#2978)v0.7.7: axum - v0.7.7Compare Source
rustdoc now generates tables of content in the sidebar (#2921)
v0.7.6: axum - v0.7.6Compare Source
Arcduring deserialization ofPathaxum::serve::Serve::tcp_nodelayandaxum::serve::WithGracefulShutdown::tcp_nodelay(#2653)Router::has_routesfunction (#2790)Serve::local_addrandWithGracefulShutdown::local_addrfunctions (#2881)v0.7.5: axum - v0.7.5Compare Source
axum::servedirectly witha
RouterorMethodRouter(#2586)h2is no longer pulled as a dependency unless thehttp2featureis enabled (#2605)
v0.7.4: axum - v0.7.4Compare Source
debug_handleron tuple response types (#2201)must_useattribute toServeandWithGracefulShutdown(#2484)axum_core::body::BodyDataStreamfrom axumv0.7.3: axum - v0.7.3Compare Source
BodyimplementsFrom<()>now (#2411)tracingfeature by default (#2460)serve(#2398)RouterIntoServiceimplementsClone(#2456)v0.7.2: axum - v0.7.2Compare Source
axum::body::to_bytes(#2373)serve(#2400)v0.7.1: axum - v0.7.1Compare Source
v0.7.0: axum - v0.7.0Compare Source
WebSocketUpgrade::max_send_queue(i.e. the
Btype param has been removed) (#1751 and #1789):FromRequestPartsFromRequestHandlerServiceHandlerWithoutStateExtHandlerLayeredFutureLayeredMethodRouterNextRequestExtRouteFutureRouteRouterhyper::Bodyas that type is removedin hyper 1.0. Instead axum has its own body type at
axum::body::Body(#1751)extract::BodyStreamhas been removed asbody::Bodyimplements
StreamandFromRequestdirectly (#1751)sse::Event::json_datato useaxum_core::Erroras its error type (#1762)DefaultOnFailedUpdgradetoDefaultOnFailedUpgrade(#1664)OnFailedUpdgradetoOnFailedUpgrade(#1664)TypedHeaderhas been move toaxum-extra(#1850)EmptyandFull. Useaxum::body::Body::emptyandaxum::body::Body::fromrespectively (#1789)IntoResponse::into_responsemust useaxum::body::Bodyas the body type.axum::response::Responsedoes this(#1789)
BoxBodytype alias and itsbox_bodyconstructor. Use
axum::body::Body::newinstead (#1789)RawBodyextractor.axum::body::BodyimplementsFromRequestdirectly (#1789)http-bodyno longer implementIntoResponse:Full, useBody::frominsteadEmpty, useBody::emptyinsteadBoxBody, useBody::newinsteadUnsyncBoxBody, useBody::newinsteadMapData, useBody::newinsteadMapErr, useBody::newinsteadaxum::extract::Requesttype alias where the body isaxum::body::Body(#1789)Router::as_serviceandRouter::into_serviceto workaroundtype inference issues when calling
ServiceExtmethods on aRouter(#1835)axum::Serveras it was removed in hyper 1.0. Insteaduse
axum::serve(listener, service)or hyper/hyper-util for more configuration options (#1868)Router::nest.Routers nested with
Router::nest_servicewill no longer inherit fallbacks (#1956)Sec-WebSocket-Keyheader inWebSocketUpgrade(#1972)axum::extract::Query::try_from_uri(#2058)IntoResponseforBox<str>andBox<[u8]>([#2035])MethodFilter. It no longer uses bitflags (#2073).source()of composite rejections (#2030)#[debug_handler](#2014)IntoResponsefor(R,) where R: IntoResponse(#2143)NestedPathextractor (#1924)handle_errorfunction to existingServiceExttrait (#2235)impl<T> IntoResponse(Parts) for Extension<T>now requiresT: Clone, as that is required by the http crate (#1882)axum::Json::from_bytes(#2244)FromRequestPartsforhttp::request::Parts(#2328)FromRequestPartsforhttp::Extensions(#2328)DefaultBodyLimitto individual routes (#2157)v0.6.20: axum - v0.6.20Compare Source
WebSocketUpgrade::write_buffer_sizeandWebSocketUpgrade::max_write_buffer_sizeWebSocketUpgrade::max_send_queueHandlerforT: IntoResponse(#2140)v0.6.19: axum - v0.6.19Compare Source
axum::extract::Query::try_from_uri(#2058)IntoResponseforBox<str>andBox<[u8]>(#2035).source()of composite rejections (#2030)#[debug_handler](#2014)v0.6.18: axum - v0.6.18Compare Source
Sec-WebSocket-Keyheader inWebSocketUpgrade(#1972)v0.6.17: axum - v0.6.17Compare Source
CONNECTrequests (#1958)v0.6.16: axum - v0.6.16Compare Source
MatchedPathin fallbacks (#1934)Routerwith 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=tracetarget (#1890)Router::nestintroduced in0.6.0.
nestnow flattens the routes which performs better (#1711)MatchedPathin nested handlers now gives the fullmatched path, including the nested path (#1711)
DerefandDerefMutfor built-in extractors (#1922)v0.6.12: axum - v0.6.12Compare Source
IntoResponseforMultipartError(#1861)v0.6.11: axum - v0.6.11Compare Source
S: Debugforimpl Debug for Router<S>(#1836)v0.6.10: axum - v0.6.10Compare Source
#[must_use]attributes to types that do nothing unless used (#1809)TypedHeaderextractor (#1810)Routervia a dynamic library (#1806)v0.6.9: axum - v0.6.9Compare Source
v0.6.8: axum - v0.6.8Compare Source
Allowmissing from routers with middleware (#1773)KeepAlive::eventfor customizing the event sent for SSE keep alive (#1729)v0.6.7: axum - v0.6.7Compare Source
FormRejection::FailedToDeserializeFormBodywhich is returnedif the request body couldn't be deserialized into the target type, as opposed
to
FailedToDeserializeFormwhich is only for query parameters (#1683)MockConnectInfofor settingConnectInfoduring tests (#1767)v0.6.6: axum - v0.6.6Compare Source
MethodRoutertoRouter::fallback(#1730)v0.6.5: axum - v0.6.5Compare Source
#[debug_handler]sometimes giving wrong borrow related suggestions (#1710)impl IntoResponseas the return type from handler functions (#1736)v0.6.4: axum - v0.6.4Compare Source
v0.6.3: axum - v0.6.3Compare Source
IntoResponsefor&'static [u8; N]and[u8; N](#1690)Pathsupport types usingserde::Deserializer::deserialize_any(#1693)RawPathParams(#1713)CloneandServiceforaxum::middleware::Next(#1712)v0.6.2: axum - v0.6.2Compare Source
body_textandstatusmethods to built-in rejections (#1612)runtimefeature ofhyperwhen 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.jswill match/*filepathwith a value offoo.js, not/foo.js(#1086)For example:
fixed: Routes like
/fooand/*restare no longer consideredoverlapping.
/foowill 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
/fooand/foo/or useaxum_extra::routing::RouterExt::route_with_tsrif you want the old behavior(#1119)
breaking:
Router::fallbacknow only acceptsHandlers (similarly towhat
get,post, etc. accept). Use the newRouter::fallback_serviceforsetting any
Serviceas the fallback (#1155)This fallback on 0.5:
Becomes this in 0.6
changed:
Router::nestnow only acceptsRouters, the general-purposeServicenesting method has been renamed tonest_service(#1368)breaking: Allow
Error: Into<Infallible>forRoute::{layer, route_layer}(#924)breaking:
MethodRouternow panics on overlapping routes (#1102)breaking:
Router::routenow only acceptsMethodRouters created withget,post, etc. Use the newRouter::route_servicefor routing toany
Services (#1155)breaking: Adding a
.route_layeronto aRouterorMethodRouterwithout any routes will now result in a panic. Previously, this just did
nothing. #1327
breaking:
RouterServicehas been removed sinceRouternow implementsServicewhen the state is(). UseRouter::with_stateto provide thestate and get a
Router<()>. Note thatRouterServiceonly existed in thepre-releases, not 0.5 (#1552)
Extractors
added: Added new type safe
Stateextractor. This can be used withRouter::with_stateand gives compile errors for missing states, whereasExtensionwould result in runtime errors (#1155)We recommend migrating from
ExtensiontoStatefor sharing application state since that is more typesafe and faster. That is done by using
Router::with_stateandState.This setup in 0.5
Becomes this in 0.6 using
State:If you have multiple extensions, you can use fields on
AppStateand 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
FromRequesttrait and introducing a newFromRequestPartstrait.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-Typessee theparse-body-based-on-content-typeexample.added:
FromRequestandFromRequestPartsderive macro re-exports fromaxum-macrosbehind themacrosfeature (#1352)added: Add
RequestExtandRequestPartsExtwhich adds conveniencemethods for running extractors to
http::Requestandhttp::request::Parts(#1301)added:
JsonRejectionnow displays the path at which a deserializationerror occurred (#1371)
added: Add
extract::RawFormfor accessing raw urlencoded query bytes or request body (#1487)fixed: Used
400 Bad RequestforFailedToDeserializeQueryStringrejections, instead of
422 Unprocessable Entity(#1387)changed: The inner error of a
JsonRejectionis nowserde_path_to_error::Error<serde_json::Error>. Previously it wasserde_json::Error(#1371)changed: The default body limit now applies to the
Multipartextractor (#1420)breaking:
ContentLengthLimithas been removed. UseDefaultBodyLimitinstead (#1400)breaking:
RequestPartshas been removed as part of theFromRequestrework (#1272)
breaking:
BodyAlreadyExtractedhas been removed (#1272)breaking: The following types or traits have a new
Stype paramwhich represents the state (#1155):
Router, defaults to()MethodRouter, defaults to()FromRequest, no defaultHandler, no defaultbreaking:
MatchedPathcan 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.
MatchedPathcan still beextracted from handlers and middleware that aren't on nested routers (#1462)
breaking: Rename
FormRejection::FailedToDeserializeQueryStringtoFormRejection::FailedToDeserializeForm(#1496)Middleware
middleware::from_fnfunctions (#1088)middleware::from_fn_with_stateto enable running extractors that requirestate (#1342)
middleware::from_extractor_with_state(#1396)map_request,map_request_with_statefor transforming therequest with an async function (#1408)
map_response,map_response_with_statefor transforming theresponse with an async function (#1414)
IntoResponse(#1152)extractor_middlewarewhich was previously deprecated.Use
axum::middleware::from_extractorinstead (#1077)Handler::layerto haveInfallibleas the error type (#1152)Misc
simple-router-wasmexamplefor more details (#1382)
ServiceExtwith methods for turning anyServiceinto aMakeServicesimilarly toRouter::into_make_service(#1302)Fromimpls have been added toextract::ws::Messageto be more inline with
tungstenite(#1421)#[derive(axum::extract::FromRef)](#1430)accept_unmasked_framessetting in WebSocketUpgrade (#1529)WebSocketUpgrade::on_failed_upgradeto 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
IntoResponserather than being aliteral
Responsetokiodefault feature needed for WASM support. If youdon't need WASM support but have
default_features = falsefor other reasonsyou likely need to re-enable the
tokiofeature (#1382)handler::{WithState, IntoService}are merged into one type,named
HandlerService(#1418)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 is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.