Skip to main content

PlexusRequest

Trait PlexusRequest 

Source
pub trait PlexusRequest: Sized {
    // Required method
    fn extract(ctx: &RawRequestContext) -> Result<Self, PlexusError>;

    // Provided method
    fn request_schema() -> Option<Value> { ... }
}
Expand description

Trait implemented by #[derive(PlexusRequest)] structs.

A PlexusRequest struct is a typed view of an inbound HTTP request, where each field is extracted from a specific part of the raw context (cookie, header, query string, peer address, or auth context).

§Deriving

Use the PlexusRequest derive macro from plexus_macros:

use plexus_macros::PlexusRequest;

#[derive(PlexusRequest)]
struct MyRequest {
    #[from_cookie("access_token")]
    auth_token: String,

    #[from_header("origin")]
    origin: Option<String>,

    #[from_peer]
    peer_addr: Option<std::net::SocketAddr>,
}

Required Methods§

Source

fn extract(ctx: &RawRequestContext) -> Result<Self, PlexusError>

Extract a typed request from the raw HTTP context.

Provided Methods§

Source

fn request_schema() -> Option<Value>

Return the JSON Schema for this request type as a serde_json::Value.

The schema includes x-plexus-source metadata on each field describing where the field value is extracted from (cookie, header, peer, etc.).

The default implementation returns None; the #[derive(PlexusRequest)] macro generates a concrete implementation with the full schema.

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.

Implementors§