MultiRequestMediaType

Derive Macro MultiRequestMediaType 

Source
#[derive(MultiRequestMediaType)]
{
    // Attributes available to this derive:
    #[multi_request_media_type]
}
Expand description

Define a single request body with multiple media types.

This macro will generate 3 implementations, MultiRequestMediaType, FromRequest and ApiRequest.

ยงExample

use predawn::{
    define_from_request_error,
    payload::{Form, Json},
    response_error::{ReadFormError, ReadJsonError},
    MultiRequestMediaType, ToSchema,
};
use serde::de::DeserializeOwned;

#[derive(Debug, MultiRequestMediaType)]
#[multi_request_media_type(error = ReadJsonOrFormError)]
pub enum JsonOrForm<T: ToSchema + DeserializeOwned> {
    Json(Json<T>),
    Form(Form<T>),
}

define_from_request_error! {
    name: ReadJsonOrFormError,
    errors: [
        ReadJsonError,
        ReadFormError,
    ],
}