Skip to main content

APIRouter

Struct APIRouter 

Source
pub struct APIRouter<S = ()> {
    pub prefix: String,
    pub routes: Vec<Route<S>>,
}
Expand description

A router for defining and organizing API routes.

APIRouter provides a fluent interface for registering HTTP route handlers with automatic OpenAPI documentation generation. Routes can be organized using path prefixes and routers can be combined using include_router().

§Type Parameters

  • S - The application state type

§Examples

use fastrust::{APIRouter, RouteConfig};
use axum::extract::Path;

async fn hello(Path(name): Path<String>) -> String {
    format!("Hello {}", name)
}

let mut api = APIRouter::new("/api");
api.get("/hello/{name}", hello, RouteConfig::default().summary("Say hello"));

§Path Prefixes

Routes registered with an APIRouter automatically have the router’s prefix prepended. For example, a router with prefix /api and a route /users will result in the full path /api/users.

§Combining Routers

Routers can be combined using include_router():

use fastrust::APIRouter;

let mut api = APIRouter::new("/api");
let mut v1 = APIRouter::new("/v1");

v1.include_router(api); // Routes become /v1/api/...

Fields§

§prefix: String

The path prefix for all routes in this router.

§routes: Vec<Route<S>>

The list of routes registered in this router.

Implementations§

Source§

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

Source

pub fn new(prefix: impl Into<String>) -> Self

Creates a new APIRouter with the given path prefix.

§Arguments
  • prefix - The path prefix for all routes (e.g., “/api”, “/v1”)
§Examples
use fastrust::APIRouter;

let api = APIRouter::new("/api");
let v1 = APIRouter::new("/v1");
Source

pub fn add_route(&mut self, route: Route<S>)

Adds a route directly to the router.

§Arguments
  • route - The route to add
Source

pub fn include_router(&mut self, router: APIRouter<S>)

Includes all routes from another router into this one.

This method consumes the provided router and adds all its routes to this router, prepending this router’s prefix to each route’s path.

§Arguments
  • router - The router to include
§Examples
use fastrust::APIRouter;

let mut api = APIRouter::new("/api");
let mut v1 = APIRouter::new("/v1");

v1.include_router(api); // api routes now have /v1 prefix
Source

pub fn get<H, T>( &mut self, path: &str, handler: H, route_config: RouteConfig, ) -> &mut Self
where H: Handler<T, S>, T: InspectSignature + 'static,

Source

pub fn post<H, T>( &mut self, path: &str, handler: H, route_config: RouteConfig, ) -> &mut Self
where H: Handler<T, S>, T: InspectSignature + 'static,

Source

pub fn put<H, T>( &mut self, path: &str, handler: H, route_config: RouteConfig, ) -> &mut Self
where H: Handler<T, S>, T: InspectSignature + 'static,

Source

pub fn patch<H, T>( &mut self, path: &str, handler: H, route_config: RouteConfig, ) -> &mut Self
where H: Handler<T, S>, T: InspectSignature + 'static,

Source

pub fn delete<H, T>( &mut self, path: &str, handler: H, route_config: RouteConfig, ) -> &mut Self
where H: Handler<T, S>, T: InspectSignature + 'static,

Source

pub fn head<H, T>( &mut self, path: &str, handler: H, route_config: RouteConfig, ) -> &mut Self
where H: Handler<T, S>, T: InspectSignature + 'static,

Source

pub fn options<H, T>( &mut self, path: &str, handler: H, route_config: RouteConfig, ) -> &mut Self
where H: Handler<T, S>, T: InspectSignature + 'static,

Source

pub fn trace<H, T>( &mut self, path: &str, handler: H, route_config: RouteConfig, ) -> &mut Self
where H: Handler<T, S>, T: InspectSignature + 'static,

Source

pub fn connect<H, T>( &mut self, path: &str, handler: H, route_config: RouteConfig, ) -> &mut Self
where H: Handler<T, S>, T: InspectSignature + 'static,

Trait Implementations§

Source§

impl<S: Clone> Clone for APIRouter<S>

Source§

fn clone(&self) -> APIRouter<S>

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<S: Debug> Debug for APIRouter<S>

Source§

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

Formats the value using the given formatter. 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> UnsafeUnpin 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, 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> 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> 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<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
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,