Currently, there is `Condition`, which accepts a boolean (to enable/disable) and an instance to the actual middleware. The downside of that is, that such a middleware needs to be constructed in any case. Even if the middleware is used or not. However, the middleware is not used when it is disabled. Only the type seems required. So this PR adds a `from_option` function, which allows passing in an `Option` instead of boolean and instance. If the option "is some" it is enabled. Otherwise, not.
50 KiB
Changelog
Unreleased - 2022-xx-xx
Added
- 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.57 due to transitive
time
dependency.
4.1.0 - 2022-06-11
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
- Add
Condition::from_option()
to allow creating a conditional middleware from anOption
. [#2623]
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 - 2022-02-25
Fixed
- Use stable version in readme example.
4.0.0 - 2022-02-25
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 - 2022-02-08
Changed
middleware::Condition
gained a broader compatibility;Compat
is needed in fewer cases. #2635
Added
4.0.0-rc.2 - 2022-02-02
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 - 2022-01-31
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 - 2022-01-21
Added
Removed
HttpRequest::req_data[_mut]()
; request-local data is still available through.extensions()
. #2585HttpRequestBuilder::del_cookie
. #2591
4.0.0-beta.20 - 2022-01-14
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 - 2022-01-04
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 - 2021-12-29
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 - 2021-12-29
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 - 2021-12-27
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 - 2021-12-17
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 - 2021-12-11
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 - 2021-11-30
Changed
- Update
actix-tls
to3.0.0-rc.1
. #2474
4.0.0-beta.12 - 2021-11-22
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 - 2021-11-15
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 - 2021-10-20
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 - 2021-09-09
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 - 2021-06-26
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 - 2021-06-17
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 - 2021-04-17
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 - 2021-04-02
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 - 2021-03-09
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 - 2021-02-10
- Update
actix-web-codegen
to0.5.0-beta.1
.
4.0.0-beta.2 - 2021-02-10
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 - 2021-01-07
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 - 2021-12-18
Changed
- Soft-deprecate
NormalizePath::default()
, noting upcoming behavior change in v4. #2529
3.3.2 - 2020-12-01
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 - 2020-11-29
- Ensure
actix-http
dependency uses sameserde_urlencoded
.
3.3.0 - 2020-11-25
Added
- Add
Either<A, B>
extractor helper. #1788
Changed
- Upgrade
serde_urlencoded
to0.7
. #1773
3.2.0 - 2020-10-30
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 - 2020-09-29
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 - 2020-09-15
Fixed
NormalizePath
when used withTrailingSlash::Trim
no longer trims the root path "/". #1678
3.0.1 - 2020-09-13
Changed
middleware::normalize::TrailingSlash
enum is now accessible. #1673
3.0.0 - 2020-09-11
- No significant changes from
3.0.0-beta.4
.
3.0.0-beta.4 - 2020-09-09
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 - 2020-08-17
Changed
- Update
rustls
to 0.18
3.0.0-beta.2 - 2020-08-17
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 - 2020-07-13
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 - 2020-05-21
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] - 2020-05-08
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] - 2020-03-11
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] - 2019-12-25
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] - 2019-12-20
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] - 2019-12-15
Fixed
- Fixed compilation with default features off
[2.0.0-alpha.5] - 2019-12-13
Added
- Add test server,
test::start()
andtest::start_with()
[2.0.0-alpha.4] - 2019-12-08
Deleted
- Delete HttpServer::run(), it is not useful with async/await
[2.0.0-alpha.3] - 2019-12-07
Changed
- Migrate to tokio 0.2
[2.0.0-alpha.1] - 2019-11-22
Changed
-
Migrated to
std::future
-
Remove implementation of
Responder
for()
. (#1167)
[1.0.9] - 2019-11-14
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] - 2019-09-25
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] - 2019-08-29
Fixed
- Request Extensions leak #1062
[1.0.6] - 2019-08-28
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] - 2019-07-18
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] - 2019-07-17
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] - 2019-06-28
Added
- Support asynchronous data factories #850
Changed
- Use
encoding_rs
crate instead of unmaintainedencoding
crate
[1.0.2] - 2019-06-17
Changed
-
Move cors middleware to
actix-cors
crate. -
Move identity middleware to
actix-identity
crate.
[1.0.1] - 2019-06-17
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] - 2019-06-05
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] - 2019-05-18
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] - 2019-05-12
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] - 2019-05-04
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] - 2019-04-24
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] - 2019-04-20
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] - 2019-04-14
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] - 2019-04-12
Added
- Added async io
TestBuffer
for testing.
Deleted
- Removed native-tls support
[1.0.0-alpha.4] - 2019-04-08
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] - 2019-04-02
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] - 2019-03-29
Added
- Rustls support
Changed
-
Use forked cookie
-
Multipart::Field renamed to MultipartField
[1.0.0-alpha.1] - 2019-03-28
Changed
-
Complete architecture re-design.
-
Return 405 response if no matching route found within resource #538