2018-06-02 18:01:51 +02:00
|
|
|
## 0.7
|
|
|
|
|
2018-06-02 18:19:13 +02:00
|
|
|
* `actix::System` has new api.
|
|
|
|
|
2018-06-02 18:25:11 +02:00
|
|
|
Instead of
|
2018-06-02 18:19:13 +02:00
|
|
|
|
2018-06-02 18:25:11 +02:00
|
|
|
```rust
|
2018-06-02 18:19:13 +02:00
|
|
|
fn main() {
|
|
|
|
let sys = actix::System::new(..);
|
|
|
|
|
|
|
|
HttpServer::new(|| ...).start()
|
2018-06-02 18:25:11 +02:00
|
|
|
|
2018-06-02 18:19:13 +02:00
|
|
|
sys.run();
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Server must be initialized within system run closure:
|
|
|
|
|
2018-06-02 18:25:11 +02:00
|
|
|
```rust
|
2018-06-02 18:19:13 +02:00
|
|
|
fn main() {
|
|
|
|
actix::System::run(|| {
|
|
|
|
HttpServer::new(|| ...).start()
|
|
|
|
});
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2018-06-02 18:28:32 +02:00
|
|
|
* [Middleware](https://actix.rs/actix-web/actix_web/middleware/trait.Middleware.html)
|
|
|
|
trait uses `&mut self` instead of `&self`.
|
2018-06-02 18:01:51 +02:00
|
|
|
|
|
|
|
* Removed `Route::with2()` and `Route::with3()` use tuple of extractors instead.
|
2018-06-02 18:28:32 +02:00
|
|
|
|
|
|
|
instead of
|
|
|
|
|
|
|
|
```rust
|
|
|
|
fn index(query: Query<..>, info: Json<MyStruct) -> impl Responder {}
|
|
|
|
```
|
|
|
|
|
2018-06-02 20:45:37 +02:00
|
|
|
use tuple of extractors and use `.with()` for registration:
|
2018-06-02 18:28:32 +02:00
|
|
|
|
|
|
|
```rust
|
|
|
|
fn index((query, json): (Query<..>, Json<MyStruct)) -> impl Responder {}
|
|
|
|
```
|
2018-06-02 18:01:51 +02:00
|
|
|
|
2018-06-02 18:28:32 +02:00
|
|
|
* Removed deprecated `HttpServer::threads()`, use
|
|
|
|
[HttpServer::workers()](https://actix.rs/actix-web/actix_web/server/struct.HttpServer.html#method.workers) instead.
|
2018-06-02 18:01:51 +02:00
|
|
|
|
2018-06-02 18:28:32 +02:00
|
|
|
|
2018-06-02 18:01:51 +02:00
|
|
|
|
|
|
|
|
2018-06-02 18:25:11 +02:00
|
|
|
## 0.6
|
2018-04-26 17:01:08 +02:00
|
|
|
|
2018-05-09 03:48:09 +02:00
|
|
|
* `Path<T>` extractor return `ErrorNotFound` on failure instead of `ErrorBadRequest`
|
|
|
|
|
2018-04-26 17:01:08 +02:00
|
|
|
* `ws::Message::Close` now includes optional close reason.
|
|
|
|
`ws::CloseCode::Status` and `ws::CloseCode::Empty` have been removed.
|
|
|
|
|
2018-05-01 22:15:35 +02:00
|
|
|
* `HttpServer::threads()` renamed to `HttpServer::workers()`.
|
|
|
|
|
2018-05-01 04:51:55 +02:00
|
|
|
* `HttpServer::start_ssl()` and `HttpServer::start_tls()` deprecated.
|
|
|
|
Use `HttpServer::bind_ssl()` and `HttpServer::bind_tls()` instead.
|
|
|
|
|
2018-05-01 18:05:50 +02:00
|
|
|
* `HttpRequest::extensions()` returns read only reference to the request's Extension
|
|
|
|
`HttpRequest::extensions_mut()` returns mutable reference.
|
|
|
|
|
2018-05-08 22:41:04 +02:00
|
|
|
* 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};`
|
|
|
|
|
2018-05-02 02:19:15 +02:00
|
|
|
* `FromRequest::from_request()` accepts mutable reference to a request
|
|
|
|
|
|
|
|
* `FromRequest::Result` has to implement `Into<Reply<Self>>`
|
|
|
|
|
2018-05-04 22:38:17 +02:00
|
|
|
* [`Responder::respond_to()`](
|
|
|
|
https://actix.rs/actix-web/actix_web/trait.Responder.html#tymethod.respond_to)
|
|
|
|
is generic over `S`
|
|
|
|
|
2018-05-15 18:53:58 +02:00
|
|
|
* Use `Query` extractor instead of HttpRequest::query()`.
|
2018-05-02 15:28:38 +02:00
|
|
|
|
2018-05-02 15:30:06 +02:00
|
|
|
```rust
|
|
|
|
fn index(q: Query<HashMap<String, String>>) -> Result<..> {
|
|
|
|
...
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
or
|
|
|
|
|
2018-05-02 15:28:38 +02:00
|
|
|
```rust
|
|
|
|
let q = Query::<HashMap<String, String>>::extract(req);
|
|
|
|
```
|
|
|
|
|
2018-05-08 22:41:04 +02:00
|
|
|
* Websocket operations are implemented as `WsWriter` trait.
|
|
|
|
you need to use `use actix_web::ws::WsWriter`
|
|
|
|
|
2018-04-26 17:01:08 +02:00
|
|
|
|
2018-06-02 18:25:11 +02:00
|
|
|
## 0.5
|
2018-04-12 01:46:21 +02:00
|
|
|
|
|
|
|
* `HttpResponseBuilder::body()`, `.finish()`, `.json()`
|
|
|
|
methods return `HttpResponse` instead of `Result<HttpResponse>`
|
|
|
|
|
2018-04-12 01:49:45 +02:00
|
|
|
* `actix_web::Method`, `actix_web::StatusCode`, `actix_web::Version`
|
2018-04-12 01:46:21 +02:00
|
|
|
moved to `actix_web::http` module
|
|
|
|
|
|
|
|
* `actix_web::header` moved to `actix_web::http::header`
|
|
|
|
|
|
|
|
* `NormalizePath` moved to `actix_web::http` module
|
|
|
|
|
2018-04-12 01:53:27 +02:00
|
|
|
* `HttpServer` moved to `actix_web::server`, added new `actix_web::server::new()` function,
|
|
|
|
shortcut for `actix_web::server::HttpServer::new()`
|
2018-04-12 01:46:21 +02:00
|
|
|
|
2018-04-12 01:53:27 +02:00
|
|
|
* `DefaultHeaders` middleware does not use separate builder, all builder methods moved to type itself
|
2018-04-12 01:46:21 +02:00
|
|
|
|
2018-04-12 01:53:27 +02:00
|
|
|
* `StaticFiles::new()`'s show_index parameter removed, use `show_files_listing()` method instead.
|
2018-04-12 01:46:21 +02:00
|
|
|
|
|
|
|
* `CookieSessionBackendBuilder` removed, all methods moved to `CookieSessionBackend` type
|
|
|
|
|
2018-04-12 01:53:27 +02:00
|
|
|
* `actix_web::httpcodes` module is deprecated, `HttpResponse::Ok()`, `HttpResponse::Found()` and other `HttpResponse::XXX()`
|
|
|
|
functions should be used instead
|
2018-04-12 01:46:21 +02:00
|
|
|
|
|
|
|
* `ClientRequestBuilder::body()` returns `Result<_, actix_web::Error>`
|
2018-04-12 01:53:27 +02:00
|
|
|
instead of `Result<_, http::Error>`
|
2018-04-12 01:46:21 +02:00
|
|
|
|
|
|
|
* `Application` renamed to a `App`
|
|
|
|
|
|
|
|
* `actix_web::Reply`, `actix_web::Resource` moved to `actix_web::dev`
|