Skip to main content

try_get_request_query

Attribute Macro try_get_request_query 

Source
#[try_get_request_query]
Expand description

Extracts a specific request query parameter into a variable wrapped in Option type.

This attribute macro retrieves a specific request query parameter by key and makes it available as an Option variable. Query parameters are extracted from the URL request query string and wrapped in an Option type to safely handle cases where the parameter may not exist.

ยงUsage

use hyperlane::*;
use hyperlane_macros::*;

#[route("/try_get_request_query")]
struct RequestQuery;

impl ServerHook for RequestQuery {
    async fn new(_: &mut Stream, _: &mut Context) -> Self {
        Self
    }

    #[prologue_macros(
        try_get_request_query("test" => try_get_request_query),
        response_body(&format!("request query: {try_get_request_query:?}")),
        send
    )]
    async fn handle(self, stream: &mut Stream, ctx: &mut Context) -> Status { Status::Continue }
}

impl RequestQuery {
    #[try_get_request_query("test" => try_get_request_query)]
    async fn request_query_with_ref_self(&self, stream: &mut Stream, ctx: &mut Context) -> Status { Status::Continue }
}

#[try_get_request_query("test" => try_get_request_query)]
async fn standalone_request_query_handler(stream: &mut Stream, ctx: &mut Context) -> Status { Status::Continue }

The macro accepts a key-to-variable mapping in the format "key" => variable_name. The variable will be available as an Option<RequestQuerysValue> in the function scope.

Supports multiple parameters: #[try_get_request_query("k1" => v1, "k2" => v2)]