axum/CHANGELOG.md
2021-08-21 11:35:49 +02:00

7.8 KiB

Changelog

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.

Unreleased

  • Overall compile time improvements. If you're having issues with compile time please file an issue!
  • Add dedicated Router to replace the RoutingDsl trait (#214)
  • Make FromRequest default to being generic over body::Body (#146)
  • Implement std::error::Error for all rejections (#153)
  • Add Router::or for combining routes (#108)
  • Add handle_error to service::OnMethod (#160)
  • Add OriginalUri for extracting original request URI in nested services (#197)
  • Implement FromRequest for http::Extensions
  • Add Headers for easily customizing headers on a response (#193)
  • Add Redirect response (#192)
  • Make RequestParts::{new, try_into_request} public (#194)
  • Support matching different HTTP methods for the same route that aren't defined together. So Router::new().route("/", get(...)).route("/", post(...)) now accepts both GET and POST. Previously only POST would be accepted (#224)

Breaking changes

  • Remove prelude. Explicit imports are now required (#195)
  • Replace axum::route(...) with axum::Router::new().route(...). This means there is now only one way to create a new router. Same goes for axum::routing::nest. (#215)
  • Add associated Body and BodyError types to IntoResponse. This is required for returning responses with bodies other than hyper::Body from handlers. See the docs for advice on how to implement IntoResponse (#86)
  • Implement SSE as an IntoResponse instead of a service (#98)
  • Replace body::BoxStdError with Error, which supports downcasting (#150)
  • get routes will now also be called for HEAD requests but will always have the response body removed (#129)
  • Change WebSocket API to use an extractor (#121)
  • Make WebSocket Message an enum (#116)
  • WebSocket now uses Error as its error type (#150) behavior (#120)
  • Implement routing::MethodFilter via bitflags
  • Removed extract::UrlParams and extract::UrlParamsMap. Use extract::Path instead
  • EmptyRouter now requires the response body to implement Send + Sync + 'static' (#108)
  • extractor_middleware now requires RequestBody: Default (#167)
  • Convert RequestAlreadyExtracted to an enum with each possible error variant (#167)
  • Router::check_infallible now returns a CheckInfallible service. This is to improve compile times.
  • These future types have been moved
    • extract::extractor_middleware::ExtractorMiddlewareResponseFuture moved to extract::extractor_middleware::future::ResponseFuture (#133)
    • routing::BoxRouteFuture moved to routing::future::BoxRouteFuture (#133)
    • routing::EmptyRouterFuture moved to routing::future::EmptyRouterFuture (#133)
    • routing::RouteFuture moved to routing::future::RouteFuture (#133)
    • service::BoxResponseBodyFuture moved to service::future::BoxResponseBodyFuture (#133)
  • The following types no longer implement Copy (#132)
    • EmptyRouter
    • ExtractorMiddleware
    • ExtractorMiddlewareLayer
    • QueryStringMissing
  • RequestParts changes (#153)
    • method new returns an &http::Method
    • method_mut new returns an &mut http::Method
    • take_method has been removed
    • uri new returns an &http::Uri
    • uri_mut new returns an &mut http::Uri
    • take_uri has been removed
  • These rejections have been removed as they're no longer used
    • MethodAlreadyExtracted (#153)
    • UriAlreadyExtracted (#153)
    • VersionAlreadyExtracted (#153)
    • UrlParamsRejection
    • InvalidUrlParam
  • The following services have new response future types:
    • service::OnMethod
    • handler::OnMethod
    • routing::Nested
  • Remove axum::sse (#98)
  • Add default feature tower-log which exposes tower's log feature. (#218)

0.1.3 (06. August, 2021)

  • Fix stripping prefix when nesting services at / (#91)
  • Add support for WebSocket protocol negotiation (#83)
  • Use pin-project-lite instead of pin-project (#95)
  • Re-export http crate and hyper::Server (#110)
  • Fix Query and Form extractors giving bad request error when query string is empty. (#117)
  • Add Path extractor. (#124)
  • Fixed the implementation of IntoResponse of (HeaderMap, T) and (StatusCode, HeaderMap, T) would ignore headers from T (#137)
  • Deprecate extract::UrlParams and extract::UrlParamsMap. Use extract::Path instead (#138)

0.1.2 (01. August, 2021)

  • Implement Stream for WebSocket (#52)
  • Implement Sink for WebSocket (#52)
  • Implement Deref most extractors (#56)
  • Return 405 Method Not Allowed for unsupported method for route (#63)
  • Add extractor for remote connection info (#55)
  • Improve error message of MissingExtension rejections (#72)
  • Improve documentation for routing (#71)
  • Clarify required response body type when routing to tower::Services (#69)
  • Add axum::body::box_body to converting an http_body::Body to axum::body::BoxBody (#69)
  • Add axum::sse for Server-Sent Events (#75)
  • Mention required dependencies in docs (#77)
  • Fix WebSockets failing on Firefox (#76)

0.1.1 (30. July, 2021)

  • Misc readme fixes.

0.1.0 (30. July, 2021)

  • Initial release.