55 KiB
		
	
	
	
	
	
			
		
		
	
	Changelog
Unreleased
actix_web::response::builder::HttpResponseBuilder::streaming()now setsContent-Typetoapplication/octet-streamifContent-Typedoes not exist.actix_web::response::builder::HttpResponseBuilder::streaming()now callsactix_web::response::builder::HttpResponseBuilder::no_chunking()ifContent-Lengthis set by user.- Add 
wscrate feature (on-by-default) which forwards toactix-httpand guards some of itsResponseErrorimpls. 
4.11.0
- Add 
Logger::log_level()method. - Improve handling of non-UTF-8 header values in 
Loggermiddleware. - Add 
HttpServer::shutdown_signal()method. - Mark 
HttpServeras#[must_use]. - Allow SVG images to be compressed by the 
Compressmiddleware. - Ignore 
Hostheader inHostguard when connection protocol is HTTP/2. - Re-export 
mimedependency. - Update 
brotlidependency to8. 
4.10.2
- No significant changes since 
4.10.1. 
4.10.1
- No significant changes since 
4.10.0. 
4.10.0
Added
- Implement 
ResponderforResult<(), E: Into<Error>>. ReturningOk(())responds with HTTP 204 No Content. 
Changed
- On Windows, an error is now returned from 
HttpServer::bind()(or TLS variants) when binding to a socket that's already in use. - Update 
brotlidependency to7. - Minimum supported Rust version (MSRV) is now 1.75.
 
4.9.0
Added
- Add 
middleware::from_fn()helper. - Add 
web::ThinDataextractor. 
4.8.0
Added
- Add 
web::Htmlresponder. - 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 theForwardedheader. - The 
UrlencodedError::ContentTypevariant (relevant to theFormextractor) now uses the 415 (Media Type Unsupported) status code in it'sResponseErrorimplementation. - Apply 
HttpServer::max_connection_rate()setting when using rustls v0.22 or v0.23. 
4.7.0
Added
- Add 
#[scope]macro. - Add 
middleware::Identitytype. - Add 
CustomizeResponder::add_cookie()method. - Add 
guard::GuardContext::app_data()method. - Add 
compat-routing-macros-force-pubcrate feature which (on-by-default) which, when disabled, causes handlers to inherit their attached function's visibility. - Add 
compatcrate 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 
unicodecrate feature (on-by-default) to switch betweenregexandregex-liteas a trade-off between full unicode support and binary size. - Add 
rustls-0_23crate feature. - Add 
HttpServer::{bind_rustls_0_23, listen_rustls_0_23}()builder methods. - Add 
HttpServer::tls_handshake_timeout()builder method forrustls-0_22andrustls-0_23. 
Changed
- Update 
brotlidependency to6. - Minimum supported Rust version (MSRV) is now 1.72.
 
Fixed
- Avoid type confusion with 
rustlsin some circumstances. 
4.5.1
Fixed
- Fix missing import when using enabling Rustls v0.22 support.
 
4.5.0
Added
- Add 
rustls-0_22crate feature. - Add 
HttpServer::{bind_rustls_0_22, listen_rustls_0_22}()builder methods. 
4.4.1
Changed
- Updated 
zstddependency to0.13. - Compression middleware now prefers brotli over zstd over gzip.
 
Fixed
- Fix validation of 
Jsonextractor whenJsonConfig::validate_content_type()is set to false. 
4.4.0
Added
- Add 
HttpServer::{bind, listen}_auto_h2c()methods behind newhttp2crate feature. - Add 
HttpServer::{bind, listen}_rustls_021()methods for Rustls v0.21 support behind newrustls-0_21crate 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 
HttpResponsefor several status codes. - Add 
http::header::ContentLengthtyped header. - Implement 
Defaultforweb::Data. - Implement 
serde::Deserializeforweb::Data. - Add 
rustls-0_20crate feature, which the existingrustlsfeature now aliases. 
Changed
- Handler functions can now receive up to 16 extractor parameters.
 - The 
Compressmiddleware no longer compresses image or video content. - Hide sensitive header values in 
HttpRequest'sDebugoutput. - Minimum supported Rust version (MSRV) is now 1.68 due to transitive 
timedependency. 
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::Acceptablefor matching againstAcceptheader MIME types. #2265 - Add fallible versions of 
testhelpers:try_call_service(),try_call_and_read_body_json(),try_read_body(), andtry_read_body_json(). #2961 
Fixed
- Add 
Allowheader toResource's default responses when no routes are matched. #2949 
4.2.1
Fixed
- Bump minimum version of 
actix-httpdependency 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_configmethods. #2752 
Changed
- Minimum supported Rust version (MSRV) is now 1.59 due to transitive 
timedependency. 
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 
ResponseErrorforstd::convert::Infallible 
Changed
- Minimum supported Rust version (MSRV) is now 1.56 due to transitive 
hashbrowndependency. 
Fixed
- Clear connection-level data on 
HttpRequestdrop. #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-codegento4.0.0. - Updated 
cookieto0.16. #2555 - Updated 
language-tagsto0.3. - Updated 
randto0.8. - Updated 
rustlsto0.20. #2414 - Updated 
tokioto1. 
Added
- Crate Features:
 - Types:
CustomizeResponderfor customizing response. #2510dev::ServerHandlere-export fromactix-server. #2442dev::ServiceFactoryre-export fromactix-service. #2325guard::GuardContextfor use with theGuardtrait. #2552http::header::AcceptEncodingtyped header. #2482http::header::Rangetyped header. #2485http::KeepAlivere-export fromactix-http. #2625middleware::Compatthat boxes middleware types likeLoggerandCompressto be used with constrained type bounds. #1865web::Headerextractor 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_threadsfor 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 
Jsonextractor to work without aContent-Typeheader present. #2362 - Connection data set through the 
HttpServer::on_connectcallback is now accessible only from the newHttpRequest::conn_data()andServiceRequest::conn_data()methods. #2491 
 
Changed
- Functions:
guard::fn_guardfunctions now receives a&GuardContext. #2552guard::Notis 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 Guardand their concrete types are made private:guard::Headerand 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,Apps can be returned from functions now. #2493Compressmiddleware's response type is nowEitherBody<Encoder<B>>. #2448error::BlockingErroris now a unit struct. It's now only triggered when blocking thread pool has shutdown. #1957ErrorHandlerResponse's response variants now useServiceResponse<EitherBody<B>>. #2515ErrorHandlersmiddleware's response types now useServiceResponse<EitherBody<B>>. #2515http::header::Encodingnow only representsContent-Encodingtypes. #2501middleware::Conditiongained a broader middleware compatibility. #2635Resourceno longer require service body type to be boxed. #2526Scopeno longer require service body type to be boxed. #2523web::Paths 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 withJsonConfigand the default behaviour of theweb::Json<T>extractor. #2010dev::ServiceRequest::{into_parts, from_parts}()can no longer fail. #1893dev::ServiceRequest::from_requestcan no longer fail. #1893dev::ServiceResponse::error_response()now uses body type ofBoxBody. #2201dev::ServiceResponse::map_body()closure receives and returnsBinstead ofResponseBody<B>. #2201http::header::ContentType::html()now producestext/html; charset=utf-8instead 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:
HttpResponsecan now be used as aResponderwith any body type. #2567
 - Misc:
- Maximum number of handler extractors has increased to 12. #2582
 - The default 
TrailingSlashbehavior is nowTrim, in line with existing documentation. See migration guide for implications. #1875 Resultextractor wrapper can now convert error types. #2581- Compress middleware will return 
406 Not Acceptablewhen 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::ConnectionInfoextractor. #2282 - Associated types in 
FromRequestimplementation forOptionandResulthave changed. #2581 - Reduce the level from 
errortodebugfor the log line that is emitted when a500 Internal Server Erroris 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 
Compressmiddleware. #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_addrwill no longer return the port number. #2554dev::ConnectionInfo::realip_remote_addrwill no longer return the port number if sourcing the IP from the peer's socket address. #2554- Accept wildcard 
*items inAcceptLanguage. #2480 - Relax 
Unpinbound onS(stream) parameter ofHttpResponseBuilder::streaming. #2448 - Fix quality parse error in 
http::header::AcceptEncodingtyped header. #2344 - Double ampersand in 
middleware::Loggerformat is escaped correctly. #2067 - Added the underlying parse error to 
test::read_body_json's panic message. #1812 
Security
cookieupgrade addressesRUSTSEC-2020-0071.
Removed
- Crate Features:
compressfeature. #2065
 - Functions:
 - Traits:
BodyEncoding; signalling content encoding is now only done via theContent-Encodingheader. #2565
 - Types:
dev::{BodySize, MessageBody, SizedStream}re-exports; they are exposed through thebodymodule. #2468EitherExtractErrordirect export. #2510rt::{Arbiter, ArbiterHandle}re-exports. #2619test::TestServer; moved to newactix-testcrate. #2112test::TestServerConfig; moved to newactix-testcrate. #2112web::HttpRequestre-export. #2663web::HttpResponsere-export. #2663
 - Methods:
AppService::set_service_data; for custom HTTP service factories adding application data, use the layered data model by callingServiceRequest::add_data_containerwhen handling requests instead. #1906dev::ConnectionInfo::get. #2487dev::ServiceResponse::checked_expr. #2401HttpRequestBuilder::del_cookie. #2591HttpResponse::take_bodyand oldHttpResponse::into_bodymethod 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 
clientmodule was removed; use theawccrate directly. 871ca5e4 middleware::{normalize, err_handlers}modules; all necessary middleware types are now exposed in themiddlewaremodule.
 - The 
 
4.0.0 Pre-Releases
4.0.0-rc.3
Changed
middleware::Conditiongained a broader compatibility;Compatis needed in fewer cases. #2635
Added
4.0.0-rc.2
Added
- On-by-default 
macrosfeature 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::configureto allow easy nesting of configuration functions. #1988
Changed
HttpResponsecan now be used as aResponderwith any body type. #2567Resultextractor wrapper can now convert error types. #2581- Associated types in 
FromRequestimpl forOptionandResulthas changed. #2581 - Maximum number of handler extractors has increased to 12. #2582
 - Removed bound 
<B as MessageBody>::Error: Debugin test utility functions in order to support returning opaque apps. #2584 
4.0.0-beta.19
Added
Changed
AcceptEncoding::preferencenow returnsOption<Preference<Encoding>>. #2501- Rename methods 
BodyEncoding::{encoding => encode_with, get_encoding => preferred_encoding}. #2501 http::header::Encodingnow only representsContent-Encodingtypes. #2501
Fixed
- Auto-negotiation of content encoding is more fault-tolerant when using the 
Compressmiddleware. #2501 
Removed
Compress::new; restricting compression algorithm is done through feature flags. #2501BodyEncodingtrait; signalling content encoding is now only done via theContent-Encodingheader. #2565
4.0.0-beta.18
Changed
- Update 
cookiedependency (re-exported) to0.16. #2555 - Minimum supported Rust version (MSRV) is now 1.54.
 
Security
cookieupgrade addressesRUSTSEC-2020-0071.
4.0.0-beta.17
Added
guard::GuardContextfor use with theGuardtrait. #2552ServiceRequest::guard_ctxfor obtaining a guard context. #2552
Changed
Guardtrait now receives a&GuardContext. #2552guard::fn_guardfunctions now receives a&GuardContext. #2552- Some guards now return 
impl Guardand their concrete types are made private:guard::Headerand all the method guards. #2552 - The 
Notguard 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_addrwill not return the port number. #2554ConnectionInfo::realip_remote_addrwill 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 
Scopeservice body type to be boxed. #2523 - No longer require 
Resourceservice body type to be boxed. #2526 
4.0.0-beta.15
Added
- Method on 
Respondertrait (customize) for customizing responders andCustomizeResponderstruct. #2510 - Implement 
DebugforDefaultHeaders. #2510 
Changed
- Align 
DefaultHeadermethod terminology, deprecating previous methods. #2510 - Response service types in 
ErrorHandlersmiddleware now useServiceResponse<EitherBody<B>>to allow changing the body type. #2515 - Both variants in 
ErrorHandlerResponsenow 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 
EitherExtractErrorexport. #2510 - Conversion implementations for 
eithercrate. #2516 test::load_streamandtest::load_body; replace usage withbody::to_bytes. #2518
4.0.0-beta.14
Added
- Methods on 
AcceptLanguage:rankedandpreference. #2480 AcceptEncodingtyped header. #2482Rangetyped header. #2485HttpResponse::map_into_{left,right}_bodyandHttpResponse::map_into_boxed_body. #2468ServiceResponse::map_into_{left,right}_bodyandHttpResponse::map_into_boxed_body. #2468- Connection data set through the 
HttpServer::on_connectcallback 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_forno 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 thebodymodule. #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-tlsto3.0.0-rc.1. #2474 
4.0.0-beta.12
Changed
- Compress middleware's response type is now 
AnyBody<Encoder<B>>. #2448 
Fixed
- Relax 
Unpinbound onS(stream) parameter ofHttpResponseBuilder::streaming. #2448 
Removed
dev::ResponseBodyre-export; is function is replaced by the newdev::AnyBodyenum. #2446
4.0.0-beta.11
Added
- Re-export 
dev::ServerHandlefromactix-server. #2442 
Changed
ContentType::htmlnow producestext/html; charset=utf-8instead oftext/html. #2423- Update 
actix-serverto2.0.0-beta.9. #2442 
4.0.0-beta.10
Added
- Option to allow 
Jsonextractor to work without aContent-Typeheader present. #2362 #[actix_web::test]macro for setting up tests with a runtime. #2409
Changed
- Associated type 
FromRequest::Configwas removed. #2233 - Inner field made private on 
web::Payload. #2384 Data::into_innerandData::get_refno longer requiresT: Sized. #2403- Updated rustls to v0.20. #2414
 - Minimum supported Rust version (MSRV) is now 1.52.
 
Removed
- Useless 
ServiceResponse::checked_exprmethod. #2401 
4.0.0-beta.9
Added
- Re-export actix-service 
ServiceFactoryindevmodule. #2325 
Changed
- Compress middleware will return 406 Not Acceptable when no content encoding is acceptable to the client. #2344
 - Move 
BaseHttpResponsetodev::Response. #2379 - Enable 
TestRequest::paramto 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 
UriandMethod. #2263 - Add extractors for 
ConnectionInfoandPeerAddr. #2263 - Add 
Route::servicefor using hand-written services as handlers. #2262 
Changed
- Change compression algorithm features flags. #2250
 - Deprecate 
App::dataandApp::data_factory. #2271 - Smarter extraction of 
ConnectionInfoparts. #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_threadsfor setting block thread pool. #2200
Changed
- Adjusted default JSON payload limit to 2MB (from 32kb) and included size and limits in the 
JsonPayloadError::Overflowerror variant. #2162 ServiceResponse::error_responsenow uses body type ofBody. #2201ServiceResponse::checked_exprnow returns aResult. #2201- Update 
language-tagsto0.3. ServiceResponse::take_body. #2201ServiceResponse::map_bodyclosure receives and returnsBinstead 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::normalizenow will not try to normalize URIs with no valid path #2246
Removed
HttpResponse::take_bodyand oldHttpResponse::into_bodymethod that casted body type. #2201
4.0.0-beta.6
Added
HttpResponseandHttpResponseBuildertypes. #2065
Changed
- Most error types are now marked 
#[non_exhaustive]. #2148 - Methods on 
ContentDispositionthat tookT: AsRef<str>now takeimpl AsRef<str>. 
4.0.0-beta.5
Added
Headerextractor for extracting common HTTP headers in handlers. #2094- Added 
TestServer::client_headersmethod. #2097 
Changed
CustomResponderwould return error asHttpResponsewhenCustomResponder::with_headerfailed 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 
clientmod was removed. Clients should now useawcdirectly. 871ca5e4 - Integration testing was moved to new 
actix-testcrate. Namely these items from thetestmodule:TestServer,TestServerConfig,start,start_with, andunused_addr. #2112 
4.0.0-beta.4
Changed
- Feature 
cookiesis now optional and enabled by default. #1981 JsonBody::newreturns a default limit of 32kB to be consistent withJsonConfigand the default behaviour of theweb::Json<T>extractor. #2010
4.0.0-beta.3
- Update 
actix-web-codegento0.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 
Respondertrait to be sync and returnsResponse/HttpResponsedirectly. Making it simpler and more performant. #1891 ServiceRequest::into_partsandServiceRequest::from_partscan no longer fail. #1893ServiceRequest::from_requestcan no longer fail. #1893- Our 
Eithertype now usesLeft/Rightvariants (instead ofA/B) #1894 test::{call_service, read_response, read_response_json, send_request}take&Servicein argument #1905App::wrap_fn,Resource::wrap_fnandScope::wrap_fnprovide&Servicein closure argument. #1905web::blockno longer requires the output is a Result. #1957
Fixed
- Multiple calls to 
App::datawith the same type now keeps the latest call's data. #1906 
Removed
- Public field of 
web::Pathhas been made private. #1894 - Public field of 
web::Queryhas 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_containerwhen handling requests instead. #1906
4.0.0-beta.1
Added
Compatmiddleware enabling generic response body/error type of middlewares likeLoggerandCompressto be used inmiddleware::ConditionandResource,Scopeservices. #1865
Changed
- Update 
actix-*dependencies to tokio1.0based versions. #1813 - Bumped 
randto0.8. - Update 
rust-tlsto0.19. #1813 - Rename 
HandlertoHandlerServiceand renameFactorytoHandler. #1852 - The default 
TrailingSlashis 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 themiddlewaremodule. - Remove 
actix-threadpoolas dependency.actix_threadpool::BlockingErrorerror type can be imported fromactix_web::errormodule. #1878 
3.3.3
Changed
- Soft-deprecate 
NormalizePath::default(), noting upcoming behavior change in v4. #2529 
3.3.2
Fixed
- Removed an occasional 
unwraponNonepanic inNormalizePathNormalization. #1762 - Fix 
match_pattern()returningNonefor scope with empty path resource. #1798 - Increase minimum 
socket2version. #1803 
3.3.1
- Ensure 
actix-httpdependency uses sameserde_urlencoded. 
3.3.0
Added
- Add 
Either<A, B>extractor helper. #1788 
Changed
- Upgrade 
serde_urlencodedto0.7. #1773 
3.2.0
Added
- Implement 
exclude_regexfor Logger middleware. #1723 - Add request-local data extractor 
web::ReqData. #1748 - Add ability to register closure for request middleware logging. #1749
 - Add 
app_datatoServiceConfig. #1757 - Expose 
on_connectfor access to the connection stream before request is handled. #1754 
Changed
- Updated 
actix-web-codegendependency 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-projectto1.0. 
3.1.0
Changed
- Add 
TrailingSlash::MergeOnlybehaviour toNormalizePath, which allowsNormalizePathto retain any trailing slashes. #1695 - Remove bound 
std::marker::Sizedfromweb::Datato support storingArc<dyn Trait>viaweb::Data::from#1710 
Fixed
ResourceMapdebug printing is no longer infinitely recursive. #1708
3.0.2
Fixed
NormalizePathwhen used withTrailingSlash::Trimno longer trims the root path "/". #1678
3.0.1
Changed
middleware::normalize::TrailingSlashenum is now accessible. #1673
3.0.0
- No significant changes from 
3.0.0-beta.4. 
3.0.0-beta.4
Added
middleware::NormalizePathnow 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
 FormConfigandJsonConfigconfigurations are now also considered when set usingApp::data. #1641HttpServer::maxconnis renamed to the more expressiveHttpServer::max_connections. #1655HttpServer::maxconnrateis renamed to the more expressiveHttpServer::max_connection_rate. #1655
3.0.0-beta.3
Changed
- Update 
rustlsto 0.18 
3.0.0-beta.2
Changed
PayloadConfigis now also considered inBytesandStringextractors when set usingApp::data. #1610web::Pathnow has a public representation:web::Path(pub T)that enables destructuring. #1594ServiceRequest::app_dataallows retrieval of non-Data data without splitting into parts to accessHttpRequestwhich 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::mainasactix_web::main. HttpRequest::match_patternandServiceRequest::match_patternfor extracting the matched resource pattern.HttpRequest::match_nameandServiceRequest::match_namefor 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 
cookiecrate. Actix-web no longer requiresringdependency. - MSRV is now 1.41.1
 
Fixed
NormalizePathimproved 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 
net2crate withsocket2 
3.0.0-alpha.2
Changed
{Resource,Scope}::default_service(f)handlers now support app data extraction. #1452- Implement 
std::error::Errorfor our custom errors #1422 - NormalizePath middleware now appends trailing / so that routes of form /example/ respond to /example requests. #1433
 - Remove the 
failurefeature and support. 
3.0.0-alpha.1
Added
- Add helper function for creating routes with 
TRACEmethod guardweb::trace() - Add convenience functions 
test::read_body_json()andtest::TestRequest::send_request()for testing. 
Changed
- Use 
sha-1crate instead of unmaintainedsha1crate - Skip empty chunks when returning response from a 
Stream#1308 - Update the 
timedependency to 0.2.7 - Update 
actix-tlsdependency to 2.0.0-alpha.1 - Update 
rustlsdependency 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
BodyEncodingtodevmodule #1220 - 
Allow to set
peer_addrfor 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
Responderfor(). (#1167) 
1.0.9
Added
- Add 
Payload::into_innermethod and make storeddef::Payloadpublic. (#1110) 
Changed
- Support 
Hostguards when theHostheader is unset (e.g. HTTP/2 requests) (#1129) 
1.0.8
Added
- 
Add
Scope::register_dataandResource::register_datamethods, parallel toApp::register_data. - 
Add
middleware::Conditionthat conditionally enables another middleware - 
Allow to re-construct
ServiceRequestfromHttpRequestandPayload - 
Add
HttpServer::listen_udsfor 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-urlencodedresponse - 
Add
into_innertoData - 
Add
test::TestRequest::set_form()convenience method to automatically serialize data and set the header in test requests. 
Changed
- 
Querypayload madepub. Allows user to pattern-match the payload. - 
Enable
rust-tlsfeature 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
errorlogging level 
Fixed
- Restored logging of errors through the 
Loggermiddleware 
1.0.4
Added
- 
Add
Responderimpl for(T, StatusCode) where T: Responder - 
Allow to access app's resource map via
ServiceRequest::resource_map()andHttpRequest::resource_map()methods. 
Changed
- Upgrade 
randdependency version to 0.7 
1.0.3
Added
- Support asynchronous data factories #850
 
Changed
- Use 
encoding_rscrate instead of unmaintainedencodingcrate 
1.0.2
Changed
- 
Move cors middleware to
actix-corscrate. - 
Move identity middleware to
actix-identitycrate. 
1.0.1
Added
- 
Add support for PathConfig #903
 - 
Add
middleware::identity::RequestIdentitytrait toget_identityfromHttpMessage. 
Changed
- 
Move cors middleware to
actix-corscrate. - 
Move identity middleware to
actix-identitycrate. - 
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 aroundServerBuilderfromHttpServer. #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 toJsonConfigfor customizing error handling of query extractors.
Changed
JsonConfigis nowSend + Sync, this implies thaterror_handlermust beSend + Synctoo.
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::configuretake anFnOnceinstead 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
Datainstances to avoid doubleArcforSend + Synctypes. 
Fixed
- Fix 
NormalizePathmiddleware 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
Respondertrait, allow to override status code and headers. - 
Store visit and login timestamp in the identity cookie #502
 
Changed
.to_async()handler can returnRespondertype #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
NormalizePathmiddleware 
Changed
- 
Rename
RouterConfigtoServiceConfig - 
Rename
test::call_successtotest::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
Decompressmiddleware. Bytes, String, Json, Form extractors automatically decompress payload. - 
Make extractor config type explicit. Add
FromRequest::Configassociated type. 
1.0.0-alpha.5
Added
- Added async io 
TestBufferfor testing. 
Deleted
- Removed native-tls support
 
1.0.0-alpha.4
Added
- 
App::configure()allow to offload app configuration to different methods - 
Added
URLPathoption for logger - 
Added
ServiceRequest::app_data(), returnsData<T> - 
Added
ServiceFromRequest::app_data(), returnsData<T> 
Changed
- 
FromRequesttrait 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
Derefimpls 
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