OpenApiRouter

Struct OpenApiRouter 

Source
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

Source

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().

Source

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());
Source

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].

Source

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);
Source

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);
Source

pub fn into_openapi(self) -> OpenApi

Consume self returning the utoipa::openapi::OpenApi instance of the OpenApiRouter.

Source

pub fn to_openapi(&mut self) -> OpenApi

Take the utoipa::openapi::OpenApi instance without consuming the OpenApiRouter.

Source

pub fn get_openapi(&self) -> &OpenApi

Get reference to the utoipa::openapi::OpenApi instance of the router.

Source

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

Source§

fn clone(&self) -> OpenApiRouter

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for OpenApiRouter

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.