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
, Forward
s 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.