poem_openapi

Trait ApiExtractor

Source
pub trait ApiExtractor<'a>: Sized {
    type ParamType;
    type ParamRawType;

    const TYPES: &'static [ApiExtractorType];
    const PARAM_IS_REQUIRED: bool = false;

    // Required method
    fn from_request(
        request: &'a Request,
        body: &mut RequestBody,
        param_opts: ExtractParamOptions<Self::ParamType>,
    ) -> impl Future<Output = Result<Self>> + Send;

    // Provided methods
    fn register(registry: &mut Registry) { ... }
    fn security_schemes() -> Vec<&'static str> { ... }
    fn param_in() -> Option<MetaParamIn> { ... }
    fn param_schema_ref() -> Option<MetaSchemaRef> { ... }
    fn request_meta() -> Option<MetaRequest> { ... }
    fn param_raw_type(&self) -> Option<&Self::ParamRawType> { ... }
}
Expand description

Represents an OpenAPI extractor.

§Provided Implementations

  • Path<T: Type>

    Extract the parameters in the request path into Path.

  • Query<T: Type>

    Extract the parameters in the query string into Query.

  • Header<T: Type>

    Extract the parameters in the request header into Header.

  • Cookie<T: Type>

    Extract the parameters in the cookie into Cookie.

  • CookiePrivate<T: Type>

    Extract the parameters in the private cookie into CookiePrivate.

  • CookieSigned<T: Type>

    Extract the parameters in the signed cookie into CookieSigned.

  • Binary<T>

    Extract the request body as binary into Binary.

  • Json<T>

    Parse the request body in JSON format into Json.

  • PlainText<T>

    Extract the request body as utf8 string into PlainText.

  • Any type derived from the ApiRequest macro

    Extract the complex request body derived from the ApiRequest macro.

  • Any type derived from the Multipart macro

    Extract the multipart object derived from the Multipart macro.

  • Any type derived from the SecurityScheme macro

    Extract the authentication value derived from the SecurityScheme macro.

  • T: poem::FromRequest

    Use Poem’s extractor.

Required Associated Constants§

Source

const TYPES: &'static [ApiExtractorType]

The type of API extractor.

Provided Associated Constants§

Source

const PARAM_IS_REQUIRED: bool = false

If it is true, it means that this parameter is required.

Required Associated Types§

Source

type ParamType

The parameter type.

Source

type ParamRawType

The raw parameter type for validators.

Required Methods§

Source

fn from_request( request: &'a Request, body: &mut RequestBody, param_opts: ExtractParamOptions<Self::ParamType>, ) -> impl Future<Output = Result<Self>> + Send

Parse from the HTTP request.

Provided Methods§

Source

fn register(registry: &mut Registry)

Register related types to registry.

Source

fn security_schemes() -> Vec<&'static str>

Returns names of security scheme if this extractor is security scheme.

Source

fn param_in() -> Option<MetaParamIn>

Returns the location of the parameter if this extractor is parameter.

Source

fn param_schema_ref() -> Option<MetaSchemaRef>

Returns the schema of the parameter if this extractor is parameter.

Source

fn request_meta() -> Option<MetaRequest>

Returns MetaRequest if this extractor is request object.

Source

fn param_raw_type(&self) -> Option<&Self::ParamRawType>

Returns a reference to the raw type of this parameter.

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§

Source§

impl<'a> ApiExtractor<'a> for Base64<Vec<u8>>

Source§

impl<'a> ApiExtractor<'a> for Base64<Bytes>

Source§

impl<'a> ApiExtractor<'a> for Binary<Vec<u8>>

Source§

impl<'a> ApiExtractor<'a> for Binary<Bytes>

Source§

impl<'a> ApiExtractor<'a> for Binary<Body>

Source§

impl<'a> ApiExtractor<'a> for Html<String>

Source§

impl<'a> ApiExtractor<'a> for PlainText<String>

Source§

impl<'a, T: FromRequest<'a>> ApiExtractor<'a> for T

Source§

impl<'a, T: DeserializeOwned + Type> ApiExtractor<'a> for Form<T>

Source§

impl<'a, T: ParseFromJSON> ApiExtractor<'a> for Json<T>

Source§

impl<'a, T: ParseFromParameter> ApiExtractor<'a> for Cookie<T>

Source§

const TYPES: &'static [ApiExtractorType] = _

Source§

const PARAM_IS_REQUIRED: bool = T::IS_REQUIRED

Source§

type ParamType = T

Source§

type ParamRawType = <T as Type>::RawValueType

Source§

impl<'a, T: ParseFromParameter> ApiExtractor<'a> for CookiePrivate<T>

Source§

const TYPES: &'static [ApiExtractorType] = _

Source§

const PARAM_IS_REQUIRED: bool = T::IS_REQUIRED

Source§

type ParamType = T

Source§

type ParamRawType = <T as Type>::RawValueType

Source§

impl<'a, T: ParseFromParameter> ApiExtractor<'a> for CookieSigned<T>

Source§

const TYPES: &'static [ApiExtractorType] = _

Source§

const PARAM_IS_REQUIRED: bool = T::IS_REQUIRED

Source§

type ParamType = T

Source§

type ParamRawType = <T as Type>::RawValueType

Source§

impl<'a, T: ParseFromParameter> ApiExtractor<'a> for Header<T>

Source§

const TYPES: &'static [ApiExtractorType] = _

Source§

const PARAM_IS_REQUIRED: bool = T::IS_REQUIRED

Source§

type ParamType = T

Source§

type ParamRawType = <T as Type>::RawValueType

Source§

impl<'a, T: ParseFromParameter> ApiExtractor<'a> for Path<T>

Source§

const TYPES: &'static [ApiExtractorType] = _

Source§

const PARAM_IS_REQUIRED: bool = T::IS_REQUIRED

Source§

type ParamType = T

Source§

type ParamRawType = <T as Type>::RawValueType

Source§

impl<'a, T: ParseFromParameter> ApiExtractor<'a> for Query<T>

Source§

const TYPES: &'static [ApiExtractorType] = _

Source§

const PARAM_IS_REQUIRED: bool = T::IS_REQUIRED

Source§

type ParamType = T

Source§

type ParamRawType = <T as Type>::RawValueType

Source§

impl<'a, T: ParseFromXML> ApiExtractor<'a> for Xml<T>

Source§

impl<'a, T: ParseFromYAML> ApiExtractor<'a> for Yaml<T>