Struct ApiRouter

Source
pub struct ApiRouter<S = ()> { /* private fields */ }
Available on crate feature axum only.
Expand description

A wrapper over axum::Router that adds API documentation-specific features.

Implementations§

Source§

impl<S> ApiRouter<S>
where S: Clone + Send + Sync + 'static,

Source

pub fn new() -> Self

Create a new router.

See axum::Router::new for details.

Source

pub fn with_state<S2>(self, state: S) -> ApiRouter<S2>

Add state to the router.

See axum::Router::with_state for details.

Source

pub fn with_path_items( self, transform: impl FnMut(TransformPathItem<'_>) -> TransformPathItem<'_>, ) -> Self

Transform the contained PathItems.

This method accepts a transform function to edit each PathItem provided by this router.

Source

pub fn api_route(self, path: &str, method_router: ApiMethodRouter<S>) -> Self

Create a route to the given method router and include it in the API documentation.

As opposed to route, this method only accepts an ApiMethodRouter.

See axum::Router::route for details.

Source

pub fn api_route_with_tsr( self, path: &str, method_router: ApiMethodRouter<S>, ) -> Self

Available on crate feature axum-extra only.

Create a route to the given method router with trailing slash removal and include it in the API documentation.

As opposed to route_with_tsr, this method only accepts an ApiMethodRouter.

See axum_extra::routing::RouterExt::route_with_tsr for details.

Source

pub fn api_route_with( self, path: &str, method_router: ApiMethodRouter<S>, transform: impl FnOnce(TransformPathItem<'_>) -> TransformPathItem<'_>, ) -> Self

Create a route to the given method router and include it in the API documentation.

This method accepts a transform function to edit the generated API documentation with.

See axum::Router::route or api_route for details.

Source

pub fn api_route_with_tsr_and( self, path: &str, method_router: ApiMethodRouter<S>, transform: impl FnOnce(TransformPathItem<'_>) -> TransformPathItem<'_>, ) -> Self

Available on crate feature axum-extra only.

Create a route to the given method router with trailing slash removal and include it in the API documentation.

This method accepts a transform function to edit the generated API documentation with.

See axum_extra::routing::RouterExt::route_with_tsr for details.

Source

pub fn finish_api(self, api: &mut OpenApi) -> Router<S>

Turn this router into an axum::Router while merging generated documentation into the provided OpenApi.

Source

pub fn finish_api_with<F>(self, api: &mut OpenApi, transform: F) -> Router<S>

Turn this router into an axum::Router while merging generated documentation into the provided OpenApi.

This method accepts a transform function to edit the generated API documentation with.

Source§

impl<S> ApiRouter<S>
where S: Clone + Send + Sync + 'static,

Existing methods extended with api-specifics.

Source

pub fn route( self, path: &str, method_router: impl Into<ApiMethodRouter<S>>, ) -> Self

See axum::Router::route for details.

This method accepts ApiMethodRouter but does not generate API documentation.

Source

pub fn route_with_tsr( self, path: &str, method_router: impl Into<ApiMethodRouter<S>>, ) -> Self

Available on crate feature axum-extra only.

See axum_extra::routing::RouterExt::route_with_tsr for details.

This method accepts ApiMethodRouter but does not generate API documentation.

Source

pub fn route_service<T>(self, path: &str, service: T) -> Self
where T: Service<Request<Body>, Error = Infallible> + Clone + Send + Sync + 'static, T::Response: IntoResponse, T::Future: Send + 'static,

See axum::Router::route_service for details.

Source

pub fn route_service_with_tsr<T>(self, path: &str, service: T) -> Self
where T: Service<Request, Error = Infallible> + Clone + Send + Sync + 'static, T::Response: IntoResponse, T::Future: Send + 'static, Self: Sized,

Available on crate feature axum-extra only.
Source

pub fn nest(self, path: &str, router: ApiRouter<S>) -> Self

See axum::Router::nest for details.

The generated documentations are nested as well.

Source

pub fn nest_api_service( self, path: &str, service: impl Into<ApiRouter<()>>, ) -> Self

Alternative to nest_service which besides nesting the service nests the generated documentation as well.

Due to Rust’s limitations, currently this function will not accept arbitrary services but only types that can be converted into an ApiRouter.

Thus the primary and probably the only use-case of this function is nesting routers with different states.

Source

pub fn nest_service<T>(self, path: &str, svc: T) -> Self
where T: Service<Request<Body>, Error = Infallible> + Clone + Send + Sync + 'static, T::Response: IntoResponse, T::Future: Send + 'static,

See axum::Router::nest_service for details. Use nest_api_service to pass on the API documentation from the nested service as well.

Source

pub fn merge<R>(self, other: R) -> Self
where R: Into<ApiRouter<S>>,

See axum::Router::merge for details.

If an another ApiRouter is provided, the generated documentations are merged as well..

Source

pub fn layer<L>(self, layer: L) -> ApiRouter<S>
where L: Layer<Route> + Clone + Send + Sync + 'static, L::Service: Service<Request<Body>> + Clone + Send + Sync + 'static, <L::Service as Service<Request<Body>>>::Response: IntoResponse + 'static, <L::Service as Service<Request<Body>>>::Error: Into<Infallible> + 'static, <L::Service as Service<Request<Body>>>::Future: Send + 'static,

See axum::Router::layer for details.

Source

pub fn route_layer<L>(self, layer: L) -> Self
where L: Layer<Route> + Clone + Send + Sync + 'static, L::Service: Service<Request<Body>> + Clone + Send + Sync + 'static, <L::Service as Service<Request<Body>>>::Response: IntoResponse + 'static, <L::Service as Service<Request<Body>>>::Error: Into<Infallible> + 'static, <L::Service as Service<Request<Body>>>::Future: Send + 'static,

See axum::Router::route_layer for details.

Source

pub fn fallback<H, T>(self, handler: H) -> Self
where H: Handler<T, S>, T: 'static,

See axum::Router::fallback for details.

Source

pub fn fallback_service<T>(self, svc: T) -> Self
where T: Service<Request<Body>, Error = Infallible> + Clone + Send + Sync + 'static, T::Response: IntoResponse, T::Future: Send + 'static,

Source

pub fn as_service<B>(&mut self) -> RouterAsService<'_, B, S>

See axum::Router::as_service for details.

Using this method will not generate API documentation.

Source

pub fn into_service<B>(self) -> RouterIntoService<B, S>

See axum::Router::into_service for details.

Using this method will not generate API documentation.

Source§

impl ApiRouter<()>

Trait Implementations§

Source§

impl<S> Clone for ApiRouter<S>

Source§

fn clone(&self) -> Self

Returns a copy 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<S: Debug> Debug for ApiRouter<S>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ApiRouter<()>

Source§

fn default() -> Self

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

impl<S> From<ApiRouter<S>> for Router<S>

Source§

fn from(api: ApiRouter<S>) -> Self

Converts to this type from the input type.
Source§

impl<S> From<Router<S>> for ApiRouter<S>

Source§

fn from(router: Router<S>) -> Self

Converts to this type from the input type.
Source§

impl<B> Service<Request<B>> for ApiRouter<()>
where B: HttpBody<Data = Bytes> + Send + 'static, B::Error: Into<BoxError>,

Source§

type Response = Response<Body>

Responses given by the service.
Source§

type Error = Infallible

Errors produced by the service.
Source§

type Future = RouteFuture<Infallible>

The future response value.
Source§

fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Source§

fn call(&mut self, req: Request<B>) -> Self::Future

Process the request and return the response asynchronously. Read more

Auto Trait Implementations§

§

impl<S> Freeze for ApiRouter<S>

§

impl<S = ()> !RefUnwindSafe for ApiRouter<S>

§

impl<S> Send for ApiRouter<S>

§

impl<S> Sync for ApiRouter<S>

§

impl<S> Unpin for ApiRouter<S>

§

impl<S = ()> !UnwindSafe for ApiRouter<S>

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, dst: *mut u8)

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

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoApi for T

Source§

fn into_api<A>(self) -> UseApi<T, A>

into UseApi
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<S, R> ServiceExt<R> for S
where S: Service<R>,

Source§

fn into_make_service(self) -> IntoMakeService<S>

Convert this service into a MakeService, that is a Service whose response is another service. Read more
Source§

fn into_make_service_with_connect_info<C>( self, ) -> IntoMakeServiceWithConnectInfo<S, C>

Available on crate feature tokio only.
Convert this service into a MakeService, that will store C’s associated ConnectInfo in a request extension such that ConnectInfo can extract it. Read more
Source§

fn handle_error<F, T>(self, f: F) -> HandleError<Self, F, T>

Convert this service into a HandleError, that will handle errors by converting them into responses. Read more
Source§

impl<T, Request> ServiceExt<Request> for T
where T: Service<Request> + ?Sized,

Source§

fn ready(&mut self) -> Ready<'_, Self, Request>
where Self: Sized,

Yields a mutable reference to the service when it is ready to accept a request.
Source§

fn ready_oneshot(self) -> ReadyOneshot<Self, Request>
where Self: Sized,

Yields the service when it is ready to accept a request.
Source§

fn oneshot(self, req: Request) -> Oneshot<Self, Request>
where Self: Sized,

Consume this Service, calling it with the provided request once it is ready.
Source§

fn call_all<S>(self, reqs: S) -> CallAll<Self, S>
where Self: Sized, S: Stream<Item = Request>,

Process all requests from the given Stream, and produce a Stream of their responses. Read more
Source§

fn and_then<F>(self, f: F) -> AndThen<Self, F>
where Self: Sized, F: Clone,

Executes a new future after this service’s future resolves. This does not alter the behaviour of the poll_ready method. Read more
Source§

fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
where Self: Sized, F: FnOnce(Self::Response) -> Response + Clone,

Maps this service’s response value to a different value. This does not alter the behaviour of the poll_ready method. Read more
Source§

fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
where Self: Sized, F: FnOnce(Self::Error) -> Error + Clone,

Maps this service’s error value to a different value. This does not alter the behaviour of the poll_ready method. Read more
Source§

fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
where Self: Sized, Error: From<Self::Error>, F: FnOnce(Result<Self::Response, Self::Error>) -> Result<Response, Error> + Clone,

Maps this service’s result type (Result<Self::Response, Self::Error>) to a different value, regardless of whether the future succeeds or fails. Read more
Source§

fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
where Self: Sized, F: FnMut(NewRequest) -> Request,

Composes a function in front of the service. Read more
Source§

fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
where Self: Sized, Error: From<Self::Error>, F: FnOnce(Result<Self::Response, Self::Error>) -> Fut + Clone, Fut: Future<Output = Result<Response, Error>>,

Composes an asynchronous function after this service. Read more
Source§

fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
where Self: Sized, F: FnMut(Self::Future) -> Fut, Error: From<Self::Error>, Fut: Future<Output = Result<Response, Error>>,

Composes a function that transforms futures produced by the service. Read more
Source§

fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
where Self: Sized + Send + 'static, Self::Future: Send + 'static,

Convert the service into a Service + Send trait object. Read more
Source§

fn boxed_clone(self) -> BoxCloneService<Request, Self::Response, Self::Error>
where Self: Sized + Clone + Send + 'static, Self::Future: Send + 'static,

Convert the service into a Service + Clone + Send trait object. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more