pub trait ToParameters<'de>: Extractible<'de> {
// Required method
fn to_parameters(components: &mut Components) -> Parameters;
}Expand description
Trait used to convert implementing type to OpenAPI parameters.
This trait is derivable for structs which are used to describe path or query
parameters. For more details of #[derive(ToParameters)] refer to derive
documentation.
§Examples
Derive ToParameters implementation. This example will fail to compile because
ToParameters cannot be used alone and it need to be used together with endpoint using the
params as well. See derive documentation for more details.
use salvo_core::prelude::*;
use salvo_oapi::{Components, EndpointArgRegister, Operation, ToParameters};
use serde::Deserialize;
#[derive(Deserialize, ToParameters)]
struct PetParams {
/// Id of pet
id: i64,
/// Name of pet
name: String,
}Roughly equal manual implementation of ToParameters trait.
#[derive(Deserialize)]
impl<'de> salvo_oapi::ToParameters<'de> for PetParams {
fn to_parameters(_components: &mut Components) -> salvo_oapi::Parameters {
salvo_oapi::Parameters::new()
.parameter(
salvo_oapi::Parameter::new("id")
.required(salvo_oapi::Required::True)
.parameter_in(salvo_oapi::ParameterIn::Path)
.description("Id of pet")
.schema(
salvo_oapi::Object::new()
.schema_type(salvo_oapi::schema::BasicType::Integer)
.format(salvo_oapi::SchemaFormat::KnownFormat(
salvo_oapi::schema::KnownFormat::Int64,
)),
),
)
.parameter(
salvo_oapi::Parameter::new("name")
.required(salvo_oapi::Required::True)
.parameter_in(salvo_oapi::ParameterIn::Query)
.description("Name of pet")
.schema(
salvo_oapi::Object::new()
.schema_type(salvo_oapi::schema::BasicType::String),
),
)
}
}
impl<'ex> Extractible<'ex> for PetParams {
fn metadata() -> &'static Metadata {
static METADATA: Metadata = Metadata::new("");
&METADATA
}
#[allow(refining_impl_trait)]
async fn extract(
req: &'ex mut Request,
depot: &'ex mut Depot,
) -> Result<Self, salvo_core::http::ParseError> {
salvo_core::serde::from_request(req, depot, Self::metadata()).await
}
#[allow(refining_impl_trait)]
async fn extract_with_arg(
req: &'ex mut Request,
depot: &'ex mut Depot,
_arg: &str,
) -> Result<Self, salvo_core::http::ParseError> {
Self::extract(req, depot).await
}
}
impl EndpointArgRegister for PetParams {
fn register(components: &mut Components, operation: &mut Operation, _arg: &str) {
operation
.parameters
.append(&mut PetParams::to_parameters(components));
}
}Required Methods§
Sourcefn to_parameters(components: &mut Components) -> Parameters
fn to_parameters(components: &mut Components) -> Parameters
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.