* build(deps): update brotli requirement from 6 to 7 Updates the requirements on [brotli](https://github.com/dropbox/rust-brotli) to permit the latest version. - [Release notes](https://github.com/dropbox/rust-brotli/releases) - [Commits](https://github.com/dropbox/rust-brotli/commits) --- updated-dependencies: - dependency-name: brotli dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * docs: update changelogs --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Rob Ede <robjtede@icloud.com>
54 KiB
Changelog
Unreleased
- On Windows, an error is now returned from
HttpServer::bind()
(or TLS variants) when binding to a socket that's already in use. - Update
brotli
dependency to7
. - Minimum supported Rust version (MSRV) is now 1.75.
4.9.0
Added
- Add
middleware::from_fn()
helper. - Add
web::ThinData
extractor.
4.8.0
Added
- Add
web::Html
responder. - Add
HttpRequest::full_url()
method to get the complete URL of the request.
Fixed
- Always remove port from return value of
ConnectionInfo::realip_remote_addr()
when handling IPv6 addresses. from theForwarded
header. - The
UrlencodedError::ContentType
variant (relevant to theForm
extractor) now uses the 415 (Media Type Unsupported) status code in it'sResponseError
implementation. - Apply
HttpServer::max_connection_rate()
setting when using rustls v0.22 or v0.23.
4.7.0
Added
- Add
#[scope]
macro. - Add
middleware::Identity
type. - Add
CustomizeResponder::add_cookie()
method. - Add
guard::GuardContext::app_data()
method. - Add
compat-routing-macros-force-pub
crate feature which (on-by-default) which, when disabled, causes handlers to inherit their attached function's visibility. - Add
compat
crate feature group (on-by-default) which, when disabled, helps with transitioning to some planned v5.0 breaking changes, starting only withcompat-routing-macros-force-pub
. - Implement
From<Box<dyn ResponseError>>
forError
.
4.6.0
Added
- Add
unicode
crate feature (on-by-default) to switch betweenregex
andregex-lite
as a trade-off between full unicode support and binary size. - Add
rustls-0_23
crate feature. - Add
HttpServer::{bind_rustls_0_23, listen_rustls_0_23}()
builder methods. - Add
HttpServer::tls_handshake_timeout()
builder method forrustls-0_22
andrustls-0_23
.
Changed
- Update
brotli
dependency to6
. - Minimum supported Rust version (MSRV) is now 1.72.
Fixed
- Avoid type confusion with
rustls
in some circumstances.
4.5.1
Fixed
- Fix missing import when using enabling Rustls v0.22 support.
4.5.0
Added
- Add
rustls-0_22
crate feature. - Add
HttpServer::{bind_rustls_0_22, listen_rustls_0_22}()
builder methods.
4.4.1
Changed
- Updated
zstd
dependency to0.13
. - Compression middleware now prefers brotli over zstd over gzip.
Fixed
- Fix validation of
Json
extractor whenJsonConfig::validate_content_type()
is set to false.
4.4.0
Added
- Add
HttpServer::{bind, listen}_auto_h2c()
methods behind newhttp2
crate feature. - Add
HttpServer::{bind, listen}_rustls_021()
methods for Rustls v0.21 support behind newrustls-0_21
crate feature. - Add
Resource::{get, post, etc...}
methods for more concisely adding routes that don't need additional guards. - Add
web::Payload::to_bytes[_limited]()
helper methods. - Add missing constructors on
HttpResponse
for several status codes. - Add
http::header::ContentLength
typed header. - Implement
Default
forweb::Data
. - Implement
serde::Deserialize
forweb::Data
. - Add
rustls-0_20
crate feature, which the existingrustls
feature now aliases.
Changed
- Handler functions can now receive up to 16 extractor parameters.
- The
Compress
middleware no longer compresses image or video content. - Hide sensitive header values in
HttpRequest
'sDebug
output. - Minimum supported Rust version (MSRV) is now 1.68 due to transitive
time
dependency.
4.3.1
Added
- Add support for custom methods with the
#[route]
macro. #2969
4.3.0
Added
- Add
ContentDisposition::attachment()
constructor. #2867 - Add
ErrorHandlers::default_handler()
(as well asdefault_handler_{server, client}()
) to make registering handlers for groups of response statuses easier. #2784 - Add
Logger::custom_response_replace()
. #2631 - Add rudimentary redirection service at
web::redirect()
/web::Redirect
. #1961 - Add
guard::Acceptable
for matching againstAccept
header MIME types. #2265 - Add fallible versions of
test
helpers:try_call_service()
,try_call_and_read_body_json()
,try_read_body()
, andtry_read_body_json()
. #2961
Fixed
- Add
Allow
header toResource
's default responses when no routes are matched. #2949
4.2.1
Fixed
- Bump minimum version of
actix-http
dependency to fix compatibility issue. #2871
4.2.0
Added
- Add
#[routes]
macro to support multiple paths for one handler. #2718 - Add
ServiceRequest::{parts, request}()
getter methods. #2786 - Add configuration options for TLS handshake timeout via
HttpServer::{rustls, openssl}_with_config
methods. #2752
Changed
- Minimum supported Rust version (MSRV) is now 1.59 due to transitive
time
dependency.
4.1.0
Added
- Add
ServiceRequest::extract()
to make it easier to use extractors when writing middlewares. #2647 - Add
Route::wrap()
to allow individual routes to use middleware. #2725 - Add
ServiceConfig::default_service()
. #2338 #2743 - Implement
ResponseError
forstd::convert::Infallible
Changed
- Minimum supported Rust version (MSRV) is now 1.56 due to transitive
hashbrown
dependency.
Fixed
- Clear connection-level data on
HttpRequest
drop. #2742
4.0.1
Fixed
- Use stable version in readme example.
4.0.0
Dependencies
- Updated
actix-*
to Tokio v1-based versions. #1813 - Updated
actix-web-codegen
to4.0.0
. - Updated
cookie
to0.16
. #2555 - Updated
language-tags
to0.3
. - Updated
rand
to0.8
. - Updated
rustls
to0.20
. #2414 - Updated
tokio
to1
.
Added
- Crate Features:
- Types:
CustomizeResponder
for customizing response. #2510dev::ServerHandle
re-export fromactix-server
. #2442dev::ServiceFactory
re-export fromactix-service
. #2325guard::GuardContext
for use with theGuard
trait. #2552http::header::AcceptEncoding
typed header. #2482http::header::Range
typed header. #2485http::KeepAlive
re-export fromactix-http
. #2625middleware::Compat
that boxes middleware types likeLogger
andCompress
to be used with constrained type bounds. #1865web::Header
extractor for extracting typed HTTP headers in handlers. #2094
- Methods:
dev::ServiceRequest::guard_ctx()
for obtaining a guard context. #2552dev::ServiceRequest::parts_mut()
. #2177dev::ServiceResponse::map_into_{left,right}_body()
andHttpResponse::map_into_boxed_body()
. #2468Either<web::Json<T>, web::Form<T>>::into_inner()
which returns the inner type for whichever variant was created. Also works forEither<web::Form<T>, web::Json<T>>
. #1894http::header::AcceptLanguage::{ranked, preference}()
. #2480HttpResponse::add_removal_cookie()
. #2586HttpResponse::map_into_{left,right}_body()
andHttpResponse::map_into_boxed_body()
. #2468HttpServer::worker_max_blocking_threads
for setting block thread pool. #2200middleware::Logger::log_target()
to allow customize. #2594Responder::customize()
trait method that wraps responder inCustomizeResponder
. #2510Route::service()
for using hand-written services as handlers. #2262ServiceResponse::into_parts()
. #2499TestServer::client_headers()
method. #2097web::ServiceConfig::configure()
to allow easy nesting of configuration functions. #1988
- Trait Implementations:
- Misc:
#[actix_web::test]
macro for setting up tests with a runtime. #2409- Enable registering a vec of services of the same type to
App
#1933 - Add
services!
macro for helping register multiple services toApp
. #1933 - Option to allow
Json
extractor to work without aContent-Type
header present. #2362 - Connection data set through the
HttpServer::on_connect
callback is now accessible only from the newHttpRequest::conn_data()
andServiceRequest::conn_data()
methods. #2491
Changed
- Functions:
guard::fn_guard
functions now receives a&GuardContext
. #2552guard::Not
is now generic over the type of guard it wraps. #2552test::{call_service, read_response, read_response_json, send_request}()
now receive a&Service
. #1905- Some guard functions now return
impl Guard
and their concrete types are made private:guard::Header
and all the method guards. #2552 - Rename
test::{default_service => status_service}()
. Old name is deprecated. #2518 - Rename
test::{read_response_json => call_and_read_body_json}()
. Old name is deprecated. #2518 - Rename
test::{read_response => call_and_read_body}()
. Old name is deprecated. #2518
- Traits:
- Types:
App
'sB
(body) type parameter been removed. As a result,App
s can be returned from functions now. #2493Compress
middleware's response type is nowEitherBody<Encoder<B>>
. #2448error::BlockingError
is now a unit struct. It's now only triggered when blocking thread pool has shutdown. #1957ErrorHandlerResponse
's response variants now useServiceResponse<EitherBody<B>>
. #2515ErrorHandlers
middleware's response types now useServiceResponse<EitherBody<B>>
. #2515http::header::Encoding
now only representsContent-Encoding
types. #2501middleware::Condition
gained a broader middleware compatibility. #2635Resource
no longer require service body type to be boxed. #2526Scope
no longer require service body type to be boxed. #2523web::Path
s inner field is now private. #1894web::Payload
's inner field is now private. #2384- Error enums are now marked
#[non_exhaustive]
. #2148
- Enum Variants:
- Methods:
App::data()
is deprecated;App::app_data()
should be preferred. #2271dev::JsonBody::new()
returns a default limit of 32kB to be consistent withJsonConfig
and the default behaviour of theweb::Json<T>
extractor. #2010dev::ServiceRequest::{into_parts, from_parts}()
can no longer fail. #1893dev::ServiceRequest::from_request
can no longer fail. #1893dev::ServiceResponse::error_response()
now uses body type ofBoxBody
. #2201dev::ServiceResponse::map_body()
closure receives and returnsB
instead ofResponseBody<B>
. #2201http::header::ContentType::html()
now producestext/html; charset=utf-8
instead oftext/html
. #2423HttpRequest::url_for
's constructed URLs no longer contain query or fragment. #2430HttpResponseBuilder::json()
can now receive data by value and reference. #1903HttpServer::{listen_rustls, bind_rustls}()
now honor the ALPN protocols in the configuration parameter. [#2226]middleware::NormalizePath()
now will not try to normalize URIs with no valid path #2246test::TestRequest::param()
now accepts more than just static strings. #2172web::Data::into_inner()
andData::get_ref()
no longer requireT: Sized
. #2403- Rename
HttpServer::{client_timeout => client_request_timeout}()
. #2611 - Rename
HttpServer::{client_shutdown => client_disconnect_timeout}()
. #2611 - Rename
http::header::Accept::{mime_precedence => ranked}()
. #2480 - Rename
http::header::Accept::{mime_preference => preference}()
. #2480 - Rename
middleware::DefaultHeaders::{content_type => add_content_type}()
. #1875 - Rename
dev::ConnectionInfo::{remote_addr => peer_addr}
, deprecating the old name. #2554
- Trait Implementations:
HttpResponse
can now be used as aResponder
with any body type. #2567
- Misc:
- Maximum number of handler extractors has increased to 12. #2582
- The default
TrailingSlash
behavior is nowTrim
, in line with existing documentation. See migration guide for implications. #1875 Result
extractor wrapper can now convert error types. #2581- Compress middleware will return
406 Not Acceptable
when no content encoding is acceptable to the client. #2344 - Adjusted default JSON payload limit to 2MB (from 32kb). #2162
- All error trait bounds in server service builders have changed from
Into<Error>
toInto<Response<BoxBody>>
. #2253 - All error trait bounds in message body and stream impls changed from
Into<Error>
toInto<Box<dyn std::error::Error>>
. #2253 - Improve spec compliance of
dev::ConnectionInfo
extractor. #2282 - Associated types in
FromRequest
implementation forOption
andResult
have changed. #2581 - Reduce the level from
error
todebug
for the log line that is emitted when a500 Internal Server Error
is built usingHttpResponse::from_error
. #2201 - Minimum supported Rust version (MSRV) is now 1.54.
Fixed
- Auto-negotiation of content encoding is more fault-tolerant when using the
Compress
middleware. #2501 - Scope and Resource middleware can access data items set on their own layer. #2288
- Multiple calls to
App::data()
with the same type now keeps the latest call's data. #1906 - Typed headers containing lists that require one or more items now enforce this minimum. #2482
dev::ConnectionInfo::peer_addr
will no longer return the port number. #2554dev::ConnectionInfo::realip_remote_addr
will no longer return the port number if sourcing the IP from the peer's socket address. #2554- Accept wildcard
*
items inAcceptLanguage
. #2480 - Relax
Unpin
bound onS
(stream) parameter ofHttpResponseBuilder::streaming
. #2448 - Fix quality parse error in
http::header::AcceptEncoding
typed header. #2344 - Double ampersand in
middleware::Logger
format is escaped correctly. #2067 - Added the underlying parse error to
test::read_body_json
's panic message. #1812
Security
cookie
upgrade addressesRUSTSEC-2020-0071
.
Removed
- Crate Features:
compress
feature. #2065
- Functions:
- Traits:
BodyEncoding
; signalling content encoding is now only done via theContent-Encoding
header. #2565
- Types:
dev::{BodySize, MessageBody, SizedStream}
re-exports; they are exposed through thebody
module. #2468EitherExtractError
direct export. #2510rt::{Arbiter, ArbiterHandle}
re-exports. #2619test::TestServer
; moved to newactix-test
crate. #2112test::TestServerConfig
; moved to newactix-test
crate. #2112web::HttpRequest
re-export. #2663web::HttpResponse
re-export. #2663
- Methods:
AppService::set_service_data
; for custom HTTP service factories adding application data, use the layered data model by callingServiceRequest::add_data_container
when handling requests instead. #1906dev::ConnectionInfo::get
. #2487dev::ServiceResponse::checked_expr
. #2401HttpRequestBuilder::del_cookie
. #2591HttpResponse::take_body
and oldHttpResponse::into_body
method that casted body type. #2201HttpResponseBuilder::json2()
. #1903middleware::Compress::new
; restricting compression algorithm is done through feature flags. #2501test::TestRequest::with_header()
; usetest::TestRequest::default().insert_header()
. #1869
- Trait Implementations:
- Misc:
- The
client
module was removed; use theawc
crate directly. 871ca5e4 middleware::{normalize, err_handlers}
modules; all necessary middleware types are now exposed in themiddleware
module.
- The
4.0.0 Pre-Releases
4.0.0-rc.3
Changed
middleware::Condition
gained a broader compatibility;Compat
is needed in fewer cases. #2635
Added
4.0.0-rc.2
Added
- On-by-default
macros
feature flag to enable routing and runtime macros. #2619
Removed
rt::{Arbiter, ArbiterHandle}
re-exports. #2619
4.0.0-rc.1
Changed
- Rename
HttpServer::{client_timeout => client_request_timeout}
. #2611 - Rename
HttpServer::{client_shutdown => client_disconnect_timeout}
. #2611
Removed
impl Future for HttpResponse
. #2601
4.0.0-beta.21
Added
Removed
HttpRequest::req_data[_mut]()
; request-local data is still available through.extensions()
. #2585HttpRequestBuilder::del_cookie
. #2591
4.0.0-beta.20
Added
GuardContext::header
#2569ServiceConfig::configure
to allow easy nesting of configuration functions. #1988
Changed
HttpResponse
can now be used as aResponder
with any body type. #2567Result
extractor wrapper can now convert error types. #2581- Associated types in
FromRequest
impl forOption
andResult
has changed. #2581 - Maximum number of handler extractors has increased to 12. #2582
- Removed bound
<B as MessageBody>::Error: Debug
in test utility functions in order to support returning opaque apps. #2584
4.0.0-beta.19
Added
Changed
AcceptEncoding::preference
now returnsOption<Preference<Encoding>>
. #2501- Rename methods
BodyEncoding::{encoding => encode_with, get_encoding => preferred_encoding}
. #2501 http::header::Encoding
now only representsContent-Encoding
types. #2501
Fixed
- Auto-negotiation of content encoding is more fault-tolerant when using the
Compress
middleware. #2501
Removed
Compress::new
; restricting compression algorithm is done through feature flags. #2501BodyEncoding
trait; signalling content encoding is now only done via theContent-Encoding
header. #2565
4.0.0-beta.18
Changed
- Update
cookie
dependency (re-exported) to0.16
. #2555 - Minimum supported Rust version (MSRV) is now 1.54.
Security
cookie
upgrade addressesRUSTSEC-2020-0071
.
4.0.0-beta.17
Added
guard::GuardContext
for use with theGuard
trait. #2552ServiceRequest::guard_ctx
for obtaining a guard context. #2552
Changed
Guard
trait now receives a&GuardContext
. #2552guard::fn_guard
functions now receives a&GuardContext
. #2552- Some guards now return
impl Guard
and their concrete types are made private:guard::Header
and all the method guards. #2552 - The
Not
guard is now generic over the type of guard it wraps. #2552
Fixed
- Rename
ConnectionInfo::{remote_addr => peer_addr}
, deprecating the old name. #2554 ConnectionInfo::peer_addr
will not return the port number. #2554ConnectionInfo::realip_remote_addr
will not return the port number if sourcing the IP from the peer's socket address. #2554
4.0.0-beta.16
Changed
- No longer require
Scope
service body type to be boxed. #2523 - No longer require
Resource
service body type to be boxed. #2526
4.0.0-beta.15
Added
- Method on
Responder
trait (customize
) for customizing responders andCustomizeResponder
struct. #2510 - Implement
Debug
forDefaultHeaders
. #2510
Changed
- Align
DefaultHeader
method terminology, deprecating previous methods. #2510 - Response service types in
ErrorHandlers
middleware now useServiceResponse<EitherBody<B>>
to allow changing the body type. #2515 - Both variants in
ErrorHandlerResponse
now useServiceResponse<EitherBody<B>>
. #2515 - Rename
test::{default_service => simple_service}
. Old name is deprecated. #2518 - Rename
test::{read_response_json => call_and_read_body_json}
. Old name is deprecated. #2518 - Rename
test::{read_response => call_and_read_body}
. Old name is deprecated. #2518 - Relax body type and error bounds on test utilities. #2518
Removed
- Top-level
EitherExtractError
export. #2510 - Conversion implementations for
either
crate. #2516 test::load_stream
andtest::load_body
; replace usage withbody::to_bytes
. #2518
4.0.0-beta.14
Added
- Methods on
AcceptLanguage
:ranked
andpreference
. #2480 AcceptEncoding
typed header. #2482Range
typed header. #2485HttpResponse::map_into_{left,right}_body
andHttpResponse::map_into_boxed_body
. #2468ServiceResponse::map_into_{left,right}_body
andHttpResponse::map_into_boxed_body
. #2468- Connection data set through the
HttpServer::on_connect
callback is now accessible only from the newHttpRequest::conn_data()
andServiceRequest::conn_data()
methods. #2491 HttpRequest::{req_data,req_data_mut}
. #2487ServiceResponse::into_parts
. #2499
Changed
- Rename
Accept::{mime_precedence => ranked}
. #2480 - Rename
Accept::{mime_preference => preference}
. #2480 - Un-deprecate
App::data_factory
. #2484 HttpRequest::url_for
no longer constructs URLs with query or fragment components. #2430- Remove
B
(body) type parameter onApp
. #2493 - Add
B
(body) type parameter onScope
. #2492 - Request-local data container is no longer part of a
RequestHead
. Instead it is a distinct part of aRequest
. #2487
Fixed
- Accept wildcard
*
items inAcceptLanguage
. #2480 - Re-exports
dev::{BodySize, MessageBody, SizedStream}
. They are exposed through thebody
module. #2468 - Typed headers containing lists that require one or more items now enforce this minimum. #2482
Removed
ConnectionInfo::get
. #2487
4.0.0-beta.13
Changed
- Update
actix-tls
to3.0.0-rc.1
. #2474
4.0.0-beta.12
Changed
- Compress middleware's response type is now
AnyBody<Encoder<B>>
. #2448
Fixed
- Relax
Unpin
bound onS
(stream) parameter ofHttpResponseBuilder::streaming
. #2448
Removed
dev::ResponseBody
re-export; is function is replaced by the newdev::AnyBody
enum. #2446
4.0.0-beta.11
Added
- Re-export
dev::ServerHandle
fromactix-server
. #2442
Changed
ContentType::html
now producestext/html; charset=utf-8
instead oftext/html
. #2423- Update
actix-server
to2.0.0-beta.9
. #2442
4.0.0-beta.10
Added
- Option to allow
Json
extractor to work without aContent-Type
header present. #2362 #[actix_web::test]
macro for setting up tests with a runtime. #2409
Changed
- Associated type
FromRequest::Config
was removed. #2233 - Inner field made private on
web::Payload
. #2384 Data::into_inner
andData::get_ref
no longer requiresT: Sized
. #2403- Updated rustls to v0.20. #2414
- Minimum supported Rust version (MSRV) is now 1.52.
Removed
- Useless
ServiceResponse::checked_expr
method. #2401
4.0.0-beta.9
Added
- Re-export actix-service
ServiceFactory
indev
module. #2325
Changed
- Compress middleware will return 406 Not Acceptable when no content encoding is acceptable to the client. #2344
- Move
BaseHttpResponse
todev::Response
. #2379 - Enable
TestRequest::param
to accept more than just static strings. #2172 - Minimum supported Rust version (MSRV) is now 1.51.
Fixed
- Fix quality parse error in Accept-Encoding header. #2344
- Re-export correct type at
web::HttpResponse
. #2379
4.0.0-beta.8
Added
- Add
ServiceRequest::parts_mut
. #2177 - Add extractors for
Uri
andMethod
. #2263 - Add extractors for
ConnectionInfo
andPeerAddr
. #2263 - Add
Route::service
for using hand-written services as handlers. #2262
Changed
- Change compression algorithm features flags. #2250
- Deprecate
App::data
andApp::data_factory
. #2271 - Smarter extraction of
ConnectionInfo
parts. #2282
Fixed
- Scope and Resource middleware can access data items set on their own layer. #2288
4.0.0-beta.7
Added
HttpServer::worker_max_blocking_threads
for setting block thread pool. #2200
Changed
- Adjusted default JSON payload limit to 2MB (from 32kb) and included size and limits in the
JsonPayloadError::Overflow
error variant. #2162 ServiceResponse::error_response
now uses body type ofBody
. #2201ServiceResponse::checked_expr
now returns aResult
. #2201- Update
language-tags
to0.3
. ServiceResponse::take_body
. #2201ServiceResponse::map_body
closure receives and returnsB
instead ofResponseBody<B>
types. #2201- All error trait bounds in server service builders have changed from
Into<Error>
toInto<Response<AnyBody>>
. #2253 - All error trait bounds in message body and stream impls changed from
Into<Error>
toInto<Box<dyn std::error::Error>>
. #2253 HttpServer::{listen_rustls(), bind_rustls()}
now honor the ALPN protocols in the configuration parameter. [#2226]middleware::normalize
now will not try to normalize URIs with no valid path #2246
Removed
HttpResponse::take_body
and oldHttpResponse::into_body
method that casted body type. #2201
4.0.0-beta.6
Added
HttpResponse
andHttpResponseBuilder
types. #2065
Changed
- Most error types are now marked
#[non_exhaustive]
. #2148 - Methods on
ContentDisposition
that tookT: AsRef<str>
now takeimpl AsRef<str>
.
4.0.0-beta.5
Added
Header
extractor for extracting common HTTP headers in handlers. #2094- Added
TestServer::client_headers
method. #2097
Changed
CustomResponder
would return error asHttpResponse
whenCustomResponder::with_header
failed instead of skipping. (Only the first error is kept when multiple error occur) #2093
Fixed
- Double ampersand in Logger format is escaped correctly. #2067
Removed
- The
client
mod was removed. Clients should now useawc
directly. 871ca5e4 - Integration testing was moved to new
actix-test
crate. Namely these items from thetest
module:TestServer
,TestServerConfig
,start
,start_with
, andunused_addr
. #2112
4.0.0-beta.4
Changed
- Feature
cookies
is now optional and enabled by default. #1981 JsonBody::new
returns a default limit of 32kB to be consistent withJsonConfig
and the default behaviour of theweb::Json<T>
extractor. #2010
4.0.0-beta.3
- Update
actix-web-codegen
to0.5.0-beta.1
.
4.0.0-beta.2
Added
- The method
Either<web::Json<T>, web::Form<T>>::into_inner()
which returns the inner type for whichever variant was created. Also works forEither<web::Form<T>, web::Json<T>>
. #1894 - Add
services!
macro for helping register multiple services toApp
. #1933 - Enable registering a vec of services of the same type to
App
#1933
Changed
- Rework
Responder
trait to be sync and returnsResponse
/HttpResponse
directly. Making it simpler and more performant. #1891 ServiceRequest::into_parts
andServiceRequest::from_parts
can no longer fail. #1893ServiceRequest::from_request
can no longer fail. #1893- Our
Either
type now usesLeft
/Right
variants (instead ofA
/B
) #1894 test::{call_service, read_response, read_response_json, send_request}
take&Service
in argument #1905App::wrap_fn
,Resource::wrap_fn
andScope::wrap_fn
provide&Service
in closure argument. #1905web::block
no longer requires the output is a Result. #1957
Fixed
- Multiple calls to
App::data
with the same type now keeps the latest call's data. #1906
Removed
- Public field of
web::Path
has been made private. #1894 - Public field of
web::Query
has been made private. #1894 TestRequest::with_header
; useTestRequest::default().insert_header()
. #1869AppService::set_service_data
; for custom HTTP service factories adding application data, use the layered data model by callingServiceRequest::add_data_container
when handling requests instead. #1906
4.0.0-beta.1
Added
Compat
middleware enabling generic response body/error type of middlewares likeLogger
andCompress
to be used inmiddleware::Condition
andResource
,Scope
services. #1865
Changed
- Update
actix-*
dependencies to tokio1.0
based versions. #1813 - Bumped
rand
to0.8
. - Update
rust-tls
to0.19
. #1813 - Rename
Handler
toHandlerService
and renameFactory
toHandler
. #1852 - The default
TrailingSlash
is nowTrim
, in line with existing documentation. See migration guide for implications. #1875 - Rename
DefaultHeaders::{content_type => add_content_type}
. #1875 - MSRV is now 1.46.0.
Fixed
- Added the underlying parse error to
test::read_body_json
's panic message. #1812
Removed
- Public modules
middleware::{normalize, err_handlers}
. All necessary middleware types are now exposed directly by themiddleware
module. - Remove
actix-threadpool
as dependency.actix_threadpool::BlockingError
error type can be imported fromactix_web::error
module. #1878
3.3.3
Changed
- Soft-deprecate
NormalizePath::default()
, noting upcoming behavior change in v4. #2529
3.3.2
Fixed
- Removed an occasional
unwrap
onNone
panic inNormalizePathNormalization
. #1762 - Fix
match_pattern()
returningNone
for scope with empty path resource. #1798 - Increase minimum
socket2
version. #1803
3.3.1
- Ensure
actix-http
dependency uses sameserde_urlencoded
.
3.3.0
Added
- Add
Either<A, B>
extractor helper. #1788
Changed
- Upgrade
serde_urlencoded
to0.7
. #1773
3.2.0
Added
- Implement
exclude_regex
for Logger middleware. #1723 - Add request-local data extractor
web::ReqData
. #1748 - Add ability to register closure for request middleware logging. #1749
- Add
app_data
toServiceConfig
. #1757 - Expose
on_connect
for access to the connection stream before request is handled. #1754
Changed
- Updated
actix-web-codegen
dependency for access to new#[route(...)]
multi-method macro. - Print non-configured
Data<T>
type when attempting extraction. #1743 - Re-export
bytes::Buf{Mut}
in web module. #1750 - Upgrade
pin-project
to1.0
.
3.1.0
Changed
- Add
TrailingSlash::MergeOnly
behaviour toNormalizePath
, which allowsNormalizePath
to retain any trailing slashes. #1695 - Remove bound
std::marker::Sized
fromweb::Data
to support storingArc<dyn Trait>
viaweb::Data::from
#1710
Fixed
ResourceMap
debug printing is no longer infinitely recursive. #1708
3.0.2
Fixed
NormalizePath
when used withTrailingSlash::Trim
no longer trims the root path "/". #1678
3.0.1
Changed
middleware::normalize::TrailingSlash
enum is now accessible. #1673
3.0.0
- No significant changes from
3.0.0-beta.4
.
3.0.0-beta.4
Added
middleware::NormalizePath
now has configurable behavior for either always having a trailing slash, or as the new addition, always trimming trailing slashes. #1639
Changed
- Update actix-codec and actix-utils dependencies. #1634
FormConfig
andJsonConfig
configurations are now also considered when set usingApp::data
. #1641HttpServer::maxconn
is renamed to the more expressiveHttpServer::max_connections
. #1655HttpServer::maxconnrate
is renamed to the more expressiveHttpServer::max_connection_rate
. #1655
3.0.0-beta.3
Changed
- Update
rustls
to 0.18
3.0.0-beta.2
Changed
PayloadConfig
is now also considered inBytes
andString
extractors when set usingApp::data
. #1610web::Path
now has a public representation:web::Path(pub T)
that enables destructuring. #1594ServiceRequest::app_data
allows retrieval of non-Data data without splitting into parts to accessHttpRequest
which already allows this. #1618- Re-export all error types from
awc
. #1621 - MSRV is now 1.42.0.
Fixed
- Memory leak of app data in pooled requests. #1609
3.0.0-beta.1
Added
- Re-export
actix_rt::main
asactix_web::main
. HttpRequest::match_pattern
andServiceRequest::match_pattern
for extracting the matched resource pattern.HttpRequest::match_name
andServiceRequest::match_name
for extracting matched resource name.
Changed
- Fix actix_http::h1::dispatcher so it returns when HW_BUFFER_SIZE is reached. Should reduce peak memory consumption during large uploads. [#1550]
- Migrate cookie handling to
cookie
crate. Actix-web no longer requiresring
dependency. - MSRV is now 1.41.1
Fixed
NormalizePath
improved consistency when path needs slashes added and removed.
3.0.0-alpha.3
Added
- Add option to create
Data<T>
fromArc<T>
#1509
Changed
- Resources and Scopes can now access non-overridden data types set on App (or containing scopes) when setting their own data. #1486
- Fix audit issue logging by default peer address #1485
- Bump minimum supported Rust version to 1.40
- Replace deprecated
net2
crate withsocket2
3.0.0-alpha.2
Changed
{Resource,Scope}::default_service(f)
handlers now support app data extraction. #1452- Implement
std::error::Error
for our custom errors #1422 - NormalizePath middleware now appends trailing / so that routes of form /example/ respond to /example requests. #1433
- Remove the
failure
feature and support.
3.0.0-alpha.1
Added
- Add helper function for creating routes with
TRACE
method guardweb::trace()
- Add convenience functions
test::read_body_json()
andtest::TestRequest::send_request()
for testing.
Changed
- Use
sha-1
crate instead of unmaintainedsha1
crate - Skip empty chunks when returning response from a
Stream
#1308 - Update the
time
dependency to 0.2.7 - Update
actix-tls
dependency to 2.0.0-alpha.1 - Update
rustls
dependency to 0.17
2.0.0
Changed
-
Rename
HttpServer::start()
toHttpServer::run()
-
Allow to gracefully stop test server via
TestServer::stop()
-
Allow to specify multi-patterns for resources
2.0.0-rc
Changed
-
Move
BodyEncoding
todev
module #1220 -
Allow to set
peer_addr
for TestRequest #1074 -
Make web::Data deref to Arc #1214
-
Rename
App::register_data()
toApp::app_data()
-
HttpRequest::app_data<T>()
returnsOption<&T>
instead ofOption<&Data<T>>
Fixed
- Fix
AppConfig::secure()
is always false. #1202
2.0.0-alpha.6
Fixed
- Fixed compilation with default features off
2.0.0-alpha.5
Added
- Add test server,
test::start()
andtest::start_with()
2.0.0-alpha.4
Deleted
- Delete HttpServer::run(), it is not useful with async/await
2.0.0-alpha.3
Changed
- Migrate to tokio 0.2
2.0.0-alpha.1
Changed
-
Migrated to
std::future
-
Remove implementation of
Responder
for()
. (#1167)
1.0.9
Added
- Add
Payload::into_inner
method and make storeddef::Payload
public. (#1110)
Changed
- Support
Host
guards when theHost
header is unset (e.g. HTTP/2 requests) (#1129)
1.0.8
Added
-
Add
Scope::register_data
andResource::register_data
methods, parallel toApp::register_data
. -
Add
middleware::Condition
that conditionally enables another middleware -
Allow to re-construct
ServiceRequest
fromHttpRequest
andPayload
-
Add
HttpServer::listen_uds
for ability to listen on UDS FD rather than path, which is useful for example with systemd.
Changed
-
Make UrlEncodedError::Overflow more informative
-
Use actix-testing for testing utils
1.0.7
Fixed
- Request Extensions leak #1062
1.0.6
Added
-
Re-implement Host predicate (#989)
-
Form implements Responder, returning a
application/x-www-form-urlencoded
response -
Add
into_inner
toData
-
Add
test::TestRequest::set_form()
convenience method to automatically serialize data and set the header in test requests.
Changed
-
Query
payload madepub
. Allows user to pattern-match the payload. -
Enable
rust-tls
feature for client #1045 -
Update serde_urlencoded to 0.6.1
-
Update url to 2.1
1.0.5
Added
-
Unix domain sockets (HttpServer::bind_uds) #92
-
Actix now logs errors resulting in "internal server error" responses always, with the
error
logging level
Fixed
- Restored logging of errors through the
Logger
middleware
1.0.4
Added
-
Add
Responder
impl for(T, StatusCode) where T: Responder
-
Allow to access app's resource map via
ServiceRequest::resource_map()
andHttpRequest::resource_map()
methods.
Changed
- Upgrade
rand
dependency version to 0.7
1.0.3
Added
- Support asynchronous data factories #850
Changed
- Use
encoding_rs
crate instead of unmaintainedencoding
crate
1.0.2
Changed
-
Move cors middleware to
actix-cors
crate. -
Move identity middleware to
actix-identity
crate.
1.0.1
Added
-
Add support for PathConfig #903
-
Add
middleware::identity::RequestIdentity
trait toget_identity
fromHttpMessage
.
Changed
-
Move cors middleware to
actix-cors
crate. -
Move identity middleware to
actix-identity
crate. -
Disable default feature
secure-cookies
. -
Allow to test an app that uses async actors #897
-
Re-apply patch from #637 #894
Fixed
- HttpRequest::url_for is broken with nested scopes #915
1.0.0
Added
-
Add
Scope::configure()
method. -
Add
ServiceRequest::set_payload()
method. -
Add
test::TestRequest::set_json()
convenience method to automatically serialize data and set header in test requests. -
Add macros for head, options, trace, connect and patch http methods
Changed
- Drop an unnecessary
Option<_>
indirection aroundServerBuilder
fromHttpServer
. #863
Fixed
-
Fix Logger request time format, and use rfc3339. #867
-
Clear http requests pool on app service drop #860
1.0.0-rc
Added
- Add
Query<T>::from_query()
to extract parameters from a query string. #846 QueryConfig
, similar toJsonConfig
for customizing error handling of query extractors.
Changed
JsonConfig
is nowSend + Sync
, this implies thaterror_handler
must beSend + Sync
too.
Fixed
- Codegen with parameters in the path only resolves the first registered endpoint #841
1.0.0-beta.4
Added
- Allow to set/override app data on scope level
Changed
App::configure
take anFnOnce
instead ofFn
- Upgrade actix-net crates
1.0.0-beta.3
Added
- Add helper function for executing futures
test::block_fn()
Changed
-
Extractor configuration could be registered with
App::data()
or withResource::data()
#775 -
Route data is unified with app data,
Route::data()
moved to resource level toResource::data()
-
CORS handling without headers #702
-
Allow constructing
Data
instances to avoid doubleArc
forSend + Sync
types.
Fixed
- Fix
NormalizePath
middleware impl #806
Deleted
App::data_factory()
is deleted.
1.0.0-beta.2
Added
-
Add raw services support via
web::service()
-
Add helper functions for reading response body
test::read_body()
-
Add support for
remainder match
(i.e "/path/{tail}*") -
Extend
Responder
trait, allow to override status code and headers. -
Store visit and login timestamp in the identity cookie #502
Changed
.to_async()
handler can returnResponder
type #792
Fixed
- Fix async web::Data factory handling
1.0.0-beta.1
Added
-
Add helper functions for reading test response body,
test::read_response()
and test::read_response_json()` -
Add
.peer_addr()
#744 -
Add
NormalizePath
middleware
Changed
-
Rename
RouterConfig
toServiceConfig
-
Rename
test::call_success
totest::call_service
-
Removed
ServiceRequest::from_parts()
as it is unsafe to create from parts. -
CookieIdentityPolicy::max_age()
accepts value in seconds
Fixed
- Fixed
TestRequest::app_data()
1.0.0-alpha.6
Changed
-
Allow using any service as default service.
-
Remove generic type for request payload, always use default.
-
Removed
Decompress
middleware. Bytes, String, Json, Form extractors automatically decompress payload. -
Make extractor config type explicit. Add
FromRequest::Config
associated type.
1.0.0-alpha.5
Added
- Added async io
TestBuffer
for testing.
Deleted
- Removed native-tls support
1.0.0-alpha.4
Added
-
App::configure()
allow to offload app configuration to different methods -
Added
URLPath
option for logger -
Added
ServiceRequest::app_data()
, returnsData<T>
-
Added
ServiceFromRequest::app_data()
, returnsData<T>
Changed
-
FromRequest
trait refactoring -
Move multipart support to actix-multipart crate
Fixed
- Fix body propagation in Response::from_error. #760
1.0.0-alpha.3
Changed
-
Renamed
TestRequest::to_service()
toTestRequest::to_srv_request()
-
Renamed
TestRequest::to_response()
toTestRequest::to_srv_response()
-
Removed
Deref
impls
Removed
- Removed unused
actix_web::web::md()
1.0.0-alpha.2
Added
- Rustls support
Changed
-
Use forked cookie
-
Multipart::Field renamed to MultipartField
1.0.0-alpha.1
Changed
-
Complete architecture re-design.
-
Return 405 response if no matching route found within resource #538