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