actix-web/MIGRATION-0.x.md
' ' character is not percent decoded anymore before matching routes. If you need to use it in your routes, you should use %20.instead of
fn main() {
let app = App::new().resource("/my index", |r| {
r.method(http::Method::GET)
.with(index);
});
}
use
fn main() {
let app = App::new().resource("/my%20index", |r| {
r.method(http::Method::GET)
.with(index);
});
}
AsyncResult::async you need to replace it with AsyncResult::futureRoute::with_config()/Route::with_async_config() always passes configuration objects as tuple even for handler with one parameter.HttpRequest does not implement Stream anymore. If you need to read request payload use HttpMessage::payload() method.instead of
fn index(req: HttpRequest) -> impl Responder {
req
.from_err()
.fold(...)
....
}
use .payload()
fn index(req: HttpRequest) -> impl Responder {
req
.payload() // <- get request payload stream
.from_err()
.fold(...)
....
}
Middleware trait uses &HttpRequest instead of &mut HttpRequest.
Removed Route::with2() and Route::with3() use tuple of extractors instead.
instead of
fn index(query: Query<..>, info: Json<MyStruct) -> impl Responder {}
use tuple of extractors and use .with() for registration:
fn index((query, json): (Query<..>, Json<MyStruct)) -> impl Responder {}
Handler::handle() uses &self instead of &mut self
Handler::handle() accepts reference to HttpRequest<_> instead of value
Removed deprecated HttpServer::threads(), use HttpServer::workers() instead.
Renamed client::ClientConnectorError::Connector to client::ClientConnectorError::Resolver
Route::with() does not return ExtractorConfig, to configure extractor use Route::with_config()
instead of
fn main() {
let app = App::new().resource("/index.html", |r| {
r.method(http::Method::GET)
.with(index)
.limit(4096); // <- limit size of the payload
});
}
use
fn main() {
let app = App::new().resource("/index.html", |r| {
r.method(http::Method::GET)
.with_config(index, |cfg| { // <- register handler
cfg.limit(4096); // <- limit size of the payload
})
});
}
Route::with_async() does not return ExtractorConfig, to configure extractor use Route::with_async_config()Path<T> extractor return ErrorNotFound on failure instead of ErrorBadRequest
ws::Message::Close now includes optional close reason. ws::CloseCode::Status and ws::CloseCode::Empty have been removed.
HttpServer::threads() renamed to HttpServer::workers().
HttpServer::start_ssl() and HttpServer::start_tls() deprecated. Use HttpServer::bind_ssl() and HttpServer::bind_tls() instead.
HttpRequest::extensions() returns read only reference to the request's Extension HttpRequest::extensions_mut() returns mutable reference.
Instead of
use actix_web::middleware::{ CookieSessionBackend, CookieSessionError, RequestSession, Session, SessionBackend, SessionImpl, SessionStorage};
use actix_web::middleware::session
use actix_web::middleware::session{CookieSessionBackend, CookieSessionError, RequestSession, Session, SessionBackend, SessionImpl, SessionStorage};
FromRequest::from_request() accepts mutable reference to a request
FromRequest::Result has to implement Into<Reply<Self>>
Responder::respond_to() is generic over S
Use Query extractor instead of HttpRequest::query()`.
fn index(q: Query<HashMap<String, String>>) -> Result<..> {
...
}
or
let q = Query::<HashMap<String, String>>::extract(req);
WsWriter trait. you need to use use actix_web::ws::WsWriterHttpResponseBuilder::body(), .finish(), .json() methods return HttpResponse instead of Result<HttpResponse>
actix_web::Method, actix_web::StatusCode, actix_web::Version moved to actix_web::http module
actix_web::header moved to actix_web::http::header
NormalizePath moved to actix_web::http module
HttpServer moved to actix_web::server, added new actix_web::server::new() function, shortcut for actix_web::server::HttpServer::new()
DefaultHeaders middleware does not use separate builder, all builder methods moved to type itself
StaticFiles::new()'s show_index parameter removed, use show_files_listing() method instead.
CookieSessionBackendBuilder removed, all methods moved to CookieSessionBackend type
actix_web::httpcodes module is deprecated, HttpResponse::Ok(), HttpResponse::Found() and other HttpResponse::XXX() functions should be used instead
ClientRequestBuilder::body() returns Result<_, actix_web::Error> instead of Result<_, http::Error>
Application renamed to a App
actix_web::Reply, actix_web::Resource moved to actix_web::dev