pub struct LenientForm<'f, T: FromForm<'f> + 'f>(_);
A FromData type for parsing FromForm types leniently.
This type implements the FromData trait, and like
Form, provides a generic means to
parse arbitrary structures from incoming form data. Unlike Form, this type
uses a lenient parsing strategy: forms that contains a superset of the
expected fields (i.e, extra fields) will parse successfully.
A LenientForm<T> will parse successfully from an incoming form if the form
contains a superset of the fields in T. Said another way, a
LenientForm<T> automatically discards extra fields without error. For
instance, if an incoming form contains the fields "a", "b", and "c" while
T only contains "a" and "c", the form will parse as LenientForm<T>.
The usage of a LenientForm type is equivalent to that of
Form, so we defer details to its
documentation. We provide shallow information here.
LenientForm implements FromData, so it can be used directly as a target
of the data = "<param>" route parameter. For instance, if some structure
of type T implements the FromForm trait, an incoming form can be
automatically parsed into the T structure with the following route and
handler:
#[post("/form_submit", data = "<param>")]
fn submit(form: LenientForm<T>) ... { ... }
A LenientForm obeys the same data limits as a Form and defaults to
32KiB. The limit can be increased by setting the limits.forms
configuration parameter. For instance, to increase the forms limit to 512KiB
for all environments, you may add the following to your Rocket.toml:
[global.limits]
forms = 524288
Immutably borrow the parsed type.
use rocket::request::LenientForm;
#[derive(FromForm)]
struct MyForm {
field: String,
}
#[post("/submit", data = "<form>")]
fn submit(form: LenientForm<MyForm>) -> String {
format!("Form field is: {}", form.get().field)
}
Returns the raw form string that was used to parse the encapsulated
object.
use rocket::request::LenientForm;
#[derive(FromForm)]
struct MyForm {
field: String,
}
#[post("/submit", data = "<form>")]
fn submit(form: LenientForm<MyForm>) -> String {
format!("Raw form string is: {}", form.raw_form_string())
}
Consumes self and returns the parsed value. For safety reasons, this
method may only be called when the parsed value contains no
non-'static references.
use rocket::request::LenientForm;
#[derive(FromForm)]
struct MyForm {
field: String,
}
#[post("/submit", data = "<form>")]
fn submit(form: LenientForm<MyForm>) -> String {
form.into_inner().field
}
The raw form string, if it was able to be retrieved from the request.
Parses a LenientForm from incoming form data.
If the content type of the request data is not
application/x-www-form-urlencoded, Forwards the request. If the form
data cannot be parsed into a T, a Failure with status code
UnprocessableEntity is returned. If the form string is malformed, a
Failure with status code BadRequest is returned. Finally, if reading
the incoming stream fails, returns a Failure with status code
InternalServerError. In all failure cases, the raw form string is
returned if it was able to be retrieved from the incoming stream.
All relevant warnings and errors are written to the console in Rocket
logging format.
Formats the value using the given formatter. Read more
🔬 This is a nightly-only experimental API. (try_from)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from)
Immutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (get_type_id)
this method will likely be replaced by an associated static
🔬 This is a nightly-only experimental API. (try_from)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from)
Mutably borrows from an owned value. Read more
Get the TypeId of this object.