Skip to main content

FromRequest

Trait FromRequest 

Source
pub trait FromRequest: Sized {
    type Error: IntoResponse;

    // Required method
    fn from_request(
        ctx: &RequestContext,
        req: &mut Request,
    ) -> impl Future<Output = Result<Self, Self::Error>> + Send;
}
Expand description

Trait for types that can be extracted from a request.

This is the core abstraction for request handlers. Each parameter in a handler function implements this trait.

The ctx parameter provides access to the request context, including asupersync’s capability context for cancellation checkpoints and budget-aware operations.

§Example

use fastapi_core::{FromRequest, Request, RequestContext};

struct MyExtractor(String);

impl FromRequest for MyExtractor {
    type Error = std::convert::Infallible;

    async fn from_request(
        ctx: &RequestContext,
        req: &mut Request,
    ) -> Result<Self, Self::Error> {
        // Check for cancellation before expensive work
        let _ = ctx.checkpoint();
        Ok(MyExtractor("extracted".to_string()))
    }
}

Required Associated Types§

Source

type Error: IntoResponse

Error type when extraction fails.

Required Methods§

Source

fn from_request( ctx: &RequestContext, req: &mut Request, ) -> impl Future<Output = Result<Self, Self::Error>> + Send

Extract a value from the request.

§Parameters
  • ctx: The request context providing access to asupersync capabilities
  • req: The HTTP request to extract from

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T: FromRequest> FromRequest for Option<T>

Source§

type Error = Infallible

Source§

async fn from_request( ctx: &RequestContext, req: &mut Request, ) -> Result<Self, Self::Error>

Implementors§

Source§

impl FromRequest for DigestAuth

Source§

impl FromRequest for MultipartForm

Source§

impl FromRequest for ApiKey

Source§

impl FromRequest for BasicAuth

Source§

impl FromRequest for BearerToken

Source§

impl FromRequest for OAuth2PasswordBearer

Source§

impl FromRequest for Pagination

Source§

impl FromRequest for RequestContext

Source§

impl<T> FromRequest for Form<T>
where T: DeserializeOwned + Send + Sync + 'static,

Source§

impl<T> FromRequest for State<T>
where T: Clone + Send + Sync + 'static,

Source§

impl<T> FromRequest for Valid<T>

Source§

impl<T, C> FromRequest for Depends<T, C>

Source§

impl<T, C> FromRequest for DependsCleanup<T, C>
where T: FromDependencyWithCleanup<Value = T>, C: DependsConfig,

Source§

impl<T, N> FromRequest for Cookie<T, N>
where T: FromHeaderValue + Send + Sync + 'static, N: CookieName + Send + Sync + 'static,

Source§

impl<T, N> FromRequest for NamedHeader<T, N>
where T: FromHeaderValue + Send + Sync + 'static, N: HeaderName + Send + Sync + 'static,

Source§

impl<T: DeserializeOwned> FromRequest for Json<T>

Source§

impl<T: DeserializeOwned> FromRequest for Path<T>

Source§

impl<T: DeserializeOwned> FromRequest for Query<T>