You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Routing:
* Unicode characters are accepted anywhere in route paths. (#998)
* Dyanmic query values can (and must) be any `FromForm` type. The `Form` type
is no longer useable in any query parameter type.
Capped
* A new `Capped` type is used to indicate when data has been truncated due to
incoming data limits. It allows checking whether data is complete or
truncated. `DataStream` methods returns `Capped` types.
* Several `Capped<T>` types implement `FromData`, `FromForm`.
* HTTP 413 (Payload Too Large) errors are now returned when the data limit is
exceeded. (resolves#972)
Hierarchical Limits
* Data limits are now hierarchical, delimited with `/`. A limit of `a/b/c`
falls back to `a/b` then `a` when not set.
Temporary Files
* A new `TempFile` data and form guard allows streaming data directly to a
file which can then be persisted.
* A new `temp_dir` config parameter specifies where to store `TempFile`.
* The limits `file` and `file/$ext`, where `$ext` is the file extension,
determines the data limit for a `TempFile`.
Forms Revamp
* All form related types now reside in a new `form` module.
* Multipart forms are supported. (resolves#106)
* Collections are supported in body forms and queries. (resolves#205)
* Nested forms and structures are supported. (resolves#313)
* Form fields can be ad-hoc validated with `#[field(value = expr)]`.
Core:
* `&RawStr` no longer implements `FromParam`.
* `&str` implements `FromParam`, `FromData`, `FromForm`.
* `FromTransformedData` was removed.
* `FromData` gained a lifetime for use with request-local data.
* All dynamic paramters in a query string must typecheck as `FromForm`.
* `FromFormValue` removed in favor of `FromFormField`.
* Dyanmic paramters, form values are always percent-decoded.
* The default error HTML is more compact.
* `&Config` is a request guard.
* The `DataStream` interface was entirely revamped.
* `State` is only exported via `rocket::State`.
* A `request::local_cache!()` macro was added for storing values in
request-local cache without consideration for type uniqueness by using a
locally generated anonymous type.
* `Request::get_param()` is now `Request::param()`.
* `Request::get_segments()` is now `Request::segments()`, takes a range.
* `Request::get_query_value()` is now `Request::query_value()`, can parse any
`FromForm` including sequences.
* `std::io::Error` implements `Responder` as `Debug<std::io::Error>`.
* `(Status, R)` where `R: Responder` implements `Responder` by setting
overriding the `Status` of `R`.
* The name of a route is printed first during route matching.
* `FlashMessage` now only has one lifetime generic.
HTTP:
* `RawStr` implements `serde::{Serialize, Deserialize}`.
* `RawStr` implements _many_ more methods, in particular, those related to the
`Pattern` API.
* `RawStr::from_str()` is now `RawStr::new()`.
* `RawStr::url_decode()` and `RawStr::url_decode_lossy()` only allocate as
necessary, return `Cow`.
* `(Status, R)` where `R: Responder` is a responder that overwrites the status
of `R` to `Status`.
* `Status` implements `Default` with `Status::Ok`.
* `Status` implements `PartialEq`, `Eq`, `Hash`, `PartialOrd`, `Ord`.
* Authority and origin part of `Absolute` can be modified with new
`Absolute::{with,set}_authority()`, `Absolute::{with,set}_origin()` methods.
* `Origin::segments()` was removed in favor of methods split into query and
path parts and into raw and decoded parts.
* The `Segments` iterator is signficantly smarter. Returns `&str`.
* `Segments::into_path_buf()` is now `Segments::to_path_buf()`, doesn't
consume.
* A new `QuerySegments` is the analogous query segment iterator.
* Once set, the `expires` field on private cookies is not overwritten.
(resolves#1506)
* `Origin::path()` and `Origin::query()` return `&RawStr`, not `&str`.
Codegen:
* Preserve more spans in `uri!` macro.
* `FromFormValue` derive removed; `FromFormField` added.
* The `form` `FromForm` and `FromFormField` field attribute is now named
`field`. `#[form(field = ..)]` is now `#[form(name = ..)]`.
Examples:
* `form_validation` and `form_kitchen_sink` removed in favor of `forms`
* `rocket_contrib::Json` implements `FromForm`.
* The `json!` macro is exported as `rocket_contrib::json::json`.
* `rocket_contrib::MsgPack` implements `FromForm`.
* Added clarifying docs to `StaticFiles`.
* The `hello_world` example uses unicode in paths.
Internal:
* Codegen uses new `exports` module with the following conventions:
- Locals starts with `__` and are lowercased.
- Rocket modules start with `_` are are lowercased.
- Stdlib types start with `_` are are titlecased.
- Rocket types are titlecased.
* A `header` module was added to `http`, contains header types.
* `SAFETY` is used as doc-string keyword for `unsafe` related comments.
* The `Uri` parser no longer recognizes Rocket route URIs.
0 commit comments