Update all dependencies #9
Reference in New Issue
Block a user
Delete Branch "renovate/all"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
1.0.66->1.0.670.5->0.61.0.89->1.0.901.22->1.23Release Notes
dtolnay/anyhow
v1.0.67Compare Source
context()is used on anOption(#280)tokio-rs/axum
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 the [parse-body-based-on-content-type][parse-body-based-on-content-type] example.added:
FromRequestandFromRequestPartsderive macro re-exports from[
axum-macros][axum-macros] behind 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)v0.5.17: axum - v0.5.17Compare Source
#[track_caller]so the errormessage points to where the user added the invalid router, rather than
somewhere internally in axum (#1248)
Multipartextractor work withRequestBodyLimitmiddleware (#1379)DefaultBodyLimit::maxfor changing the default body limit (#1397)v0.5.16: axum - v0.5.16Compare Source
Security
breaking: Added default limit to how much data
Bytes::from_requestwillconsume. 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_requestinternally:
FormJsonStringThanks to Shachar Menashe for reporting this vulnerability.
(#1346)
v0.5.15: axum - v0.5.15Compare Source
Note: This is a re-release of 0.5.14 that fixes an accidental breaking change.
QueryRejectionresponse. (#1171)v0.5.14: axum - v0.5.14Compare Source
Yanked, as it contained an accidental breaking change.
v0.5.13: axum - v0.5.13Compare Source
WebSocketUpgradecannot upgrade the connection it will return aWebSocketUpgradeRejection::ConnectionNotUpgradablerejection (#1135)WebSocketUpgradeRejectionhas a new variantConnectionNotUpgradablevariant (#1135)
v0.5.12: axum - v0.5.12Compare Source
debug_handlerwhich is an attribute macro that improvestype errors when applied to handler function. It is re-exported from
axum-macros(#1144)v0.5.11: axum - v0.5.11Compare Source
TryFrom<http:: Method>forMethodFilterand use newNoMatchingMethodFiltererror in case of failure (#1130)v0.5.10: axum - v0.5.10Compare Source
Routercheaper to clone (#1123)v0.5.9: axum - v0.5.9Compare Source
headersis enabled and theformfeature is disabled (#1107)
v0.5.8: axum - v0.5.8Compare Source
Forwardedheader inHostextractor (#1078)
IntoResponseforForm(#1095)v0.5.7: axum - v0.5.7Compare Source
DefaultforExtension(#1043)Vec<(String, String)>inextract::Path<_>to get vector ofkey/value pairs (#1059)
extract::ws::close_codewhich contains constants for close codes (#1067)impl IntoResponseless in docs (#1049)v0.5.6: axum - v0.5.6Compare Source
WebSocket::protocolto return the selected WebSocket subprotocol, if there is one. (#1022)PathRejection::WrongNumberOfParametersto hint at usingPath<(String, String)>orPath<SomeStruct>(#1023)PathRejection::WrongNumberOfParametersnow uses500 Internal Server Errorsinceit's a programmer error and not a client error (#1023)
InvalidFormContentTypementioning the wrong content typev0.5.5: axum - v0.5.5Compare Source
GET,HEAD, andOPTIONSrequests inContentLengthLimit.Request with these methods are now accepted if they do not have a
Content-Lengthheader, andthe request body will not be checked. If they do have a
Content-Lengthheader they'll berejected. This allows
ContentLengthLimitto be used as middleware around several routes,including
GETroutes (#989)MethodRouter::{into_make_service, into_make_service_with_connect_info}(#1010)v0.5.4: axum - v0.5.4Compare Source
response::ErrorResponseandresponse::ResultforIntoResponse-based error handling (#921)middleware::from_extractorand deprecateextract::extractor_middleware(#957)v0.5.3: axum - v0.5.3Compare Source
AppendHeadersfor appending headers to a response rather than overriding them (#927)axum::extract::multipart::Field::chunkmethod for streaming a single chunk fromthe field (#901)
v0.5.2: axum - v0.5.2Compare Source
Yanked, as it contained an accidental breaking change.
v0.5.1: axum - v0.5.1Compare Source
RequestParts::extractwhich allows applying an extractor as a method call ([#897)serde-rs/json
v1.0.90Compare Source
tokio-rs/tokio
v1.23.0: Tokio v1.23.0Compare Source
Fixed
ChildStdin(#5216)async fn ready()false positive for OS-specific events (#5231)Changed
yield_nowdefers task until after driver poll (#5223)winapidependency withwindows-sys(#5204)Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Renovate Bot.
c2796247ceto8f2544deb0Update Rust crate axum to 0.6to Update all dependencies8f2544deb0to06ae52717d