Request

Struct Request 

Source
pub struct Request { /* private fields */ }
Expand description

HTTP Request wrapper providing Laravel-like access to request data

Implementations§

Source§

impl Request

Source

pub fn new(inner: Request<Incoming>) -> Self

Source

pub fn with_params(self, params: HashMap<String, String>) -> Self

Source

pub fn method(&self) -> &Method

Get the request method

Source

pub fn path(&self) -> &str

Get the request path

Source

pub fn param(&self, name: &str) -> Result<&str, ParamError>

Get a route parameter by name (e.g., /users/{id}) Returns Err(ParamError) if the parameter is missing, enabling use of ? operator

Source

pub fn params(&self) -> &HashMap<String, String>

Get all route parameters

Source

pub fn inner(&self) -> &Request<Incoming>

Get the inner hyper request

Source

pub fn header(&self, name: &str) -> Option<&str>

Get a header value by name

Source

pub fn content_type(&self) -> Option<&str>

Get the Content-Type header

Source

pub fn is_inertia(&self) -> bool

Check if this is an Inertia XHR request

Source

pub fn inertia_version(&self) -> Option<&str>

Get the Inertia version from request headers

Source

pub fn inertia_partial_component(&self) -> Option<&str>

Get partial component name for partial reloads

Source

pub fn inertia_partial_data(&self) -> Option<Vec<&str>>

Get partial data keys for partial reloads

Source

pub async fn body_bytes(self) -> Result<(RequestParts, Bytes), FrameworkError>

Consume the request and collect the body as bytes

Source

pub async fn json<T: DeserializeOwned>(self) -> Result<T, FrameworkError>

Parse the request body as JSON

Consumes the request since the body can only be read once.

§Example
#[derive(Deserialize)]
struct CreateUser { name: String, email: String }

pub async fn store(req: Request) -> Response {
    let data: CreateUser = req.json().await?;
    // ...
}
Source

pub async fn form<T: DeserializeOwned>(self) -> Result<T, FrameworkError>

Parse the request body as form-urlencoded

Consumes the request since the body can only be read once.

§Example
#[derive(Deserialize)]
struct LoginForm { username: String, password: String }

pub async fn login(req: Request) -> Response {
    let form: LoginForm = req.form().await?;
    // ...
}
Source

pub async fn input<T: DeserializeOwned>(self) -> Result<T, FrameworkError>

Parse the request body based on Content-Type header

  • application/json -> JSON parsing
  • application/x-www-form-urlencoded -> Form parsing
  • Otherwise -> JSON parsing (default)

Consumes the request since the body can only be read once.

Source

pub fn into_parts(self) -> (RequestParts, Incoming)

Consume the request and return its parts along with the inner hyper request body

This is used internally by the handler macro for FormRequest extraction.

Trait Implementations§

Source§

impl FromRequest for Request

Request passes through unchanged

Source§

fn from_request<'async_trait>( req: Request, ) -> Pin<Box<dyn Future<Output = Result<Self, FrameworkError>> + Send + 'async_trait>>
where Self: 'async_trait,

Extract Self from the incoming request Read more

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more