Skip to main content

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

Create a new request from a raw hyper request.

Source

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

Attach route parameters extracted from the URL path.

Source

pub fn with_route_pattern(self, pattern: String) -> Self

Set the route pattern (e.g., “/users/{id}”)

Source

pub fn route_pattern(&self) -> Option<String>

Get the route pattern for metrics grouping

Source

pub fn insert<T: Send + Sync + 'static>(&mut self, value: T)

Insert a value into the request extensions (type-map pattern)

This is async-safe unlike thread-local storage.

Source

pub fn get<T: Send + Sync + 'static>(&self) -> Option<&T>

Get a reference to a value from the request extensions

Source

pub fn get_mut<T: Send + Sync + 'static>(&mut self) -> Option<&mut T>

Get a mutable reference to a value from the request extensions

Source

pub fn method(&self) -> &Method

Get the request method

Source

pub fn path(&self) -> &str

Get the request path

Source

pub fn set_path(&mut self, new_path: &str)

Rewrite the request path (server-side only — the browser URL is unchanged).

Replaces the URI path component while preserving the scheme, authority, and query string. Used by pre-route middleware (e.g. HostMiddleware) to map custom-domain requests onto internal slug-based routes before routing occurs.

new_path must begin with /. Panics in debug mode if it does not.

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 param_as<T: FromStr>(&self, name: &str) -> Result<T, ParamError>
where T::Err: Display,

Get a route parameter parsed as a specific type

Combines param() with parsing, returning a typed value.

§Example
pub async fn show(req: Request) -> Response {
    let id: i32 = req.param_as("id")?;
    // ...
}
Source

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

Get all route parameters

Source

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

Get a query string parameter by name

§Example
// URL: /users?page=2&limit=10
let page = req.query("page"); // Some("2")
let sort = req.query("sort"); // None
Source

pub fn query_or(&self, name: &str, default: &str) -> String

Get a query string parameter or a default value

§Example
// URL: /users?page=2
let page = req.query_or("page", "1"); // "2"
let limit = req.query_or("limit", "10"); // "10"
Source

pub fn query_as<T: FromStr>(&self, name: &str) -> Option<T>

Get a query string parameter parsed as a specific type

§Example
// URL: /users?page=2&limit=10
let page: Option<i32> = req.query_as("page"); // Some(2)
Source

pub fn query_as_or<T: FromStr>(&self, name: &str, default: T) -> T

Get a query string parameter parsed as a specific type, or a default

§Example
// URL: /users?page=2
let page: i32 = req.query_as_or("page", 1); // 2
let limit: i32 = req.query_as_or("limit", 10); // 10
Source

pub fn old(&self, field: &str) -> Option<String>

Read a previously-submitted form value from session flash.

After a POST handler calls ValidationError::with_old_input(&data).redirect_back(...), the GET handler retrieves the value with req.old("field_name") and passes it as InputProps.default_value to repopulate the form.

Reads from _flash.old._old_input.<field> without clearing (read-only semantics). Flash aging (move new→old→deleted) is handled by the session middleware at request boundaries, so multiple reads in the same GET handler are safe.

Returns None when no flash value exists, no session is active, or the key is absent.

Source

pub fn validation_error(&self, field: &str) -> Option<String>

Read the first validation error message for a field from session flash.

After a POST handler calls errors.redirect_back(...), the GET handler calls req.validation_error("field_name") and passes the result as InputProps.error.

Reads from _flash.old._validation_errors without clearing (read-only semantics).

Returns None when no flash errors exist, no session is active, or the field has no error.

Source

pub fn has_validation_errors(&self) -> bool

Returns true when any validation errors were flashed from a prior request.

Useful for rendering a form-wide error summary banner.

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 cookies(&self) -> HashMap<String, String>

Get all cookies from the request

Parses the Cookie header and returns a HashMap of cookie names to values.

§Example
let cookies = req.cookies();
if let Some(session) = cookies.get("session") {
    println!("Session: {}", session);
}
Source

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

Get a specific cookie value by name

§Example
if let Some(session_id) = req.cookie("session") {
    // Use session_id
}
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 From<&Request> for SavedInertiaContext

Source§

fn from(req: &Request) -> Self

Converts to this type from the input type.
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
Source§

impl InertiaRequest for Request

Implement the framework-agnostic InertiaRequest trait for Ferro’s Request type.

Source§

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

Get a header value by name. Read more
Source§

fn path(&self) -> &str

Get the request path (URL path component).
Source§

fn is_inertia(&self) -> bool

Check if this is an Inertia XHR request. Read more
Source§

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

Get the Inertia asset version from the request. Read more
Source§

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

Get the partial reload data keys. Read more
Source§

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

Get the component name for partial reload. Read more
Source§

fn accepts_json(&self) -> bool

Check if the request accepts JSON responses. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> Chain<T> for T

Source§

fn len(&self) -> usize

The number of items that this chain link consists of.
Source§

fn append_to(self, v: &mut Vec<T>)

Append the elements in this link to the chain.
Source§

impl<T> From<T> for T

Source§

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
Source§

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

Source§

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = Infallible

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

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

Performs the conversion.
Source§

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

Source§

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

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

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