pub struct Form<T>(pub T);Expand description
URL encoded extractor and response.
§As extractor
If used as an extractor, Form will deserialize form data from the request,
specifically:
- If the request has a method of GETorHEAD, the form data will be read from the query string (same as withQuery)
- If the request has a different method, the form will be read from the body
of the request. It must have a content-typeofapplication/x-www-form-urlencodedfor this to work. If you want to parsemultipart/form-datarequest bodies, useMultipartinstead.
This matches how HTML forms are sent by browsers by default.
In both cases, the inner type T must implement serde::Deserialize.
⚠️ Since parsing form data might require consuming the request body, the Form extractor must be
last if there are multiple extractors in a handler. See “the order of
extractors”
use axum::Form;
use serde::Deserialize;
#[derive(Deserialize)]
struct SignUp {
    username: String,
    password: String,
}
async fn accept_form(Form(sign_up): Form<SignUp>) {
    // ...
}§As response
Form can also be used to encode any type that implements
serde::Serialize as application/x-www-form-urlencoded
use axum::Form;
use serde::Serialize;
#[derive(Serialize)]
struct Payload {
    value: String,
}
async fn handler() -> Form<Payload> {
    Form(Payload { value: "foo".to_owned() })
}Tuple Fields§
§0: TTrait Implementations§
Source§impl<T, S> FromRequest<S> for Form<T>
 
impl<T, S> FromRequest<S> for Form<T>
Source§impl<T> IntoResponse for Form<T>where
    T: Serialize,
 
impl<T> IntoResponse for Form<T>where
    T: Serialize,
Source§fn into_response(self) -> Response
 
fn into_response(self) -> Response
Create a response.
impl<T: Copy> Copy for Form<T>
Auto Trait Implementations§
impl<T> Freeze for Form<T>where
    T: Freeze,
impl<T> RefUnwindSafe for Form<T>where
    T: RefUnwindSafe,
impl<T> Send for Form<T>where
    T: Send,
impl<T> Sync for Form<T>where
    T: Sync,
impl<T> Unpin for Form<T>where
    T: Unpin,
impl<T> UnwindSafe for Form<T>where
    T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
Source§impl<H, T> HandlerWithoutStateExt<T> for H
 
impl<H, T> HandlerWithoutStateExt<T> for H
Source§fn into_service(self) -> HandlerService<H, T, ()>
 
fn into_service(self) -> HandlerService<H, T, ()>
Convert the handler into a 
Service and no state.Source§fn into_make_service(self) -> IntoMakeService<HandlerService<H, T, ()>>
 
fn into_make_service(self) -> IntoMakeService<HandlerService<H, T, ()>>
Convert the handler into a 
MakeService and no state. Read moreSource§fn into_make_service_with_connect_info<C>(
    self,
) -> IntoMakeServiceWithConnectInfo<HandlerService<H, T, ()>, C>
 
fn into_make_service_with_connect_info<C>( self, ) -> IntoMakeServiceWithConnectInfo<HandlerService<H, T, ()>, C>
Convert the handler into a 
MakeService which stores information
about the incoming connection and has no state. Read more