pub struct OpenApiRouter(/* private fields */);Expand description
A wrapper struct for [axum::Router] and utoipa::openapi::OpenApi for composing handlers
and services with collecting OpenAPI information from the handlers.
This struct provides pass through implementation for most of the [axum::Router] methods and
extends capabilities for few to collect the OpenAPI information. Methods that are not
implemented can be easily called after converting this router to [axum::Router] by
Into::into.
§Examples
Create new OpenApiRouter with default values populated from cargo environment variables.
let _: OpenApiRouter = OpenApiRouter::new();Instantiate a new OpenApiRouter with new empty utoipa::openapi::OpenApi.
let _: OpenApiRouter = OpenApiRouter::default();Implementations§
Source§impl OpenApiRouter
impl OpenApiRouter
Sourcepub fn new() -> OpenApiRouter
pub fn new() -> OpenApiRouter
Instantiate a new OpenApiRouter with default values populated from cargo environment
variables. This creates an OpenApi similar of creating a new OpenApi via
#[derive(OpenApi)]
If you want to create OpenApiRouter with completely empty utoipa::openapi::OpenApi
instance, use OpenApiRouter::default().
Sourcepub fn with_openapi(openapi: OpenApi) -> Self
pub fn with_openapi(openapi: OpenApi) -> Self
Instantiates a new OpenApiRouter with given openapi instance.
This function allows using existing utoipa::openapi::OpenApi as source for this router.
§Examples
Use derived utoipa::openapi::OpenApi as source for OpenApiRouter.
#[derive(utoipa::ToSchema)]
struct Todo {
id: i32,
}
#[derive(utoipa::OpenApi)]
#[openapi(components(schemas(Todo)))]
struct Api;
let mut router: OpenApiRouter = OpenApiRouter::with_openapi(Api::openapi());Sourcepub fn routes(self, (schemas, paths): UtoipaMethodRouter) -> Self
pub fn routes(self, (schemas, paths): UtoipaMethodRouter) -> Self
Register UtoipaMethodRouter content created with routes macro to self.
Paths of the UtoipaMethodRouter will be extended to utoipa::openapi::OpenApi and
[axum::routing::MethodRouter] will be added to the [axum::Router].
Sourcepub fn nest(self, path: &str, router: OpenApiRouter) -> Self
pub fn nest(self, path: &str, router: OpenApiRouter) -> Self
Nest router to self under given path. Router routes will be nested with
[axum::Router::nest].
This method expects OpenApiRouter instance in order to nest OpenApi paths and router
routes. If you wish to use [axum::Router::nest] you need to first convert this instance
to [axum::Router] (let _: Router = OpenApiRouter::new().into()).
§Examples
Nest two routers.
#[utoipa::path(get, path = "/search")]
async fn search() {}
let search_router = OpenApiRouter::new()
.routes(utoipa_axum::routes!(search));
let router: OpenApiRouter = OpenApiRouter::new()
.nest("/api", search_router);Sourcepub fn merge(self, router: OpenApiRouter) -> Self
pub fn merge(self, router: OpenApiRouter) -> Self
Merge utoipa::openapi::path::Paths from router to self and merge [Router] routes
and fallback with [axum::Router::merge].
This method expects OpenApiRouter instance in order to merge OpenApi paths and router
routes. If you wish to use [axum::Router::merge] you need to first convert this instance
to [axum::Router] (let _: Router = OpenApiRouter::new().into()).
§Examples
Merge two routers.
#[utoipa::path(get, path = "/search")]
async fn search() {}
let search_router = OpenApiRouter::new()
.routes(utoipa_axum::routes!(search));
let router: OpenApiRouter = OpenApiRouter::new()
.merge(search_router);Sourcepub fn into_openapi(self) -> OpenApi
pub fn into_openapi(self) -> OpenApi
Consume self returning the utoipa::openapi::OpenApi instance of the
OpenApiRouter.
Sourcepub fn to_openapi(&mut self) -> OpenApi
pub fn to_openapi(&mut self) -> OpenApi
Take the utoipa::openapi::OpenApi instance without consuming the OpenApiRouter.
Sourcepub fn get_openapi(&self) -> &OpenApi
pub fn get_openapi(&self) -> &OpenApi
Get reference to the utoipa::openapi::OpenApi instance of the router.
Sourcepub fn get_openapi_mut(&mut self) -> &mut OpenApi
pub fn get_openapi_mut(&mut self) -> &mut OpenApi
Get mutable reference to the utoipa::openapi::OpenApi instance of the router.
Trait Implementations§
Source§impl Clone for OpenApiRouter
impl Clone for OpenApiRouter
Source§fn clone(&self) -> OpenApiRouter
fn clone(&self) -> OpenApiRouter
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more