pub struct RiRouter { /* private fields */ }Expand description
Router for managing API routes and matching requests to handlers.
This struct maintains a collection of routes organized by HTTP method using radix trees for O(k) lookup performance, where k is the path length.
Implementations§
Source§impl RiRouter
impl RiRouter
Sourcepub fn get(&self, path: &str, handler: RiRouteHandler)
pub fn get(&self, path: &str, handler: RiRouteHandler)
Adds a GET route to the router.
§Parameters
path: Path pattern for the routehandler: Request handler for the route
Sourcepub fn post(&self, path: &str, handler: RiRouteHandler)
pub fn post(&self, path: &str, handler: RiRouteHandler)
Adds a POST route to the router.
§Parameters
path: Path pattern for the routehandler: Request handler for the route
Sourcepub fn put(&self, path: &str, handler: RiRouteHandler)
pub fn put(&self, path: &str, handler: RiRouteHandler)
Adds a PUT route to the router.
§Parameters
path: Path pattern for the routehandler: Request handler for the route
Sourcepub fn delete(&self, path: &str, handler: RiRouteHandler)
pub fn delete(&self, path: &str, handler: RiRouteHandler)
Adds a DELETE route to the router.
§Parameters
path: Path pattern for the routehandler: Request handler for the route
Sourcepub fn patch(&self, path: &str, handler: RiRouteHandler)
pub fn patch(&self, path: &str, handler: RiRouteHandler)
Adds a PATCH route to the router.
§Parameters
path: Path pattern for the routehandler: Request handler for the route
Sourcepub fn options(&self, path: &str, handler: RiRouteHandler)
pub fn options(&self, path: &str, handler: RiRouteHandler)
Adds an OPTIONS route to the router.
§Parameters
path: Path pattern for the routehandler: Request handler for the route
Sourcepub async fn route(
&self,
request: &RiGatewayRequest,
) -> RiResult<RiRouteHandler>
pub async fn route( &self, request: &RiGatewayRequest, ) -> RiResult<RiRouteHandler>
Finds a matching route for the given request using radix tree.
This method uses radix tree for O(k) route lookup where k is the path length. It checks the route cache first, then searches the radix tree for the matching route.
§Parameters
request: The gateway request to find a route for
§Returns
A RiResult<RiRouteHandler> with the matching handler, or an error if no route is found
Sourcepub fn mount(&self, prefix: &str, router: &RiRouter)
pub fn mount(&self, prefix: &str, router: &RiRouter)
Mounts another router’s routes with a prefix.
This method adds all routes from another router to this router, prepending the specified prefix to each route’s path.
§Parameters
prefix: The prefix to prepend to all mounted routesrouter: The router to mount
Sourcepub fn clear_routes(&self)
pub fn clear_routes(&self)
Clears all routes from the router.
This method removes all routes from the router, clears all radix trees, and clears the route cache.
Sourcepub fn route_count(&self) -> usize
pub fn route_count(&self) -> usize
Gets the number of routes registered in the router.
§Returns
The number of routes registered in the router
Trait Implementations§
Source§impl<'py> IntoPyObject<'py> for RiRouter
impl<'py> IntoPyObject<'py> for RiRouter
Source§impl PyClassImpl for RiRouter
impl PyClassImpl for RiRouter
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = c"Router for managing API routes and matching requests to handlers.\n\nThis struct maintains a collection of routes organized by HTTP method using\nradix trees for O(k) lookup performance, where k is the path length.\x00"
const RAW_DOC: &'static CStr = c"Router for managing API routes and matching requests to handlers.\n\nThis struct maintains a collection of routes organized by HTTP method using\nradix trees for O(k) lookup performance, where k is the path length.\x00"
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type ThreadChecker = SendablePyClass<RiRouter>
type ThreadChecker = SendablePyClass<RiRouter>
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
Source§impl PyMethods<RiRouter> for PyClassImplCollector<RiRouter>
impl PyMethods<RiRouter> for PyClassImplCollector<RiRouter>
fn py_methods(self) -> &'static PyClassItems
Source§impl PyTypeInfo for RiRouter
impl PyTypeInfo for RiRouter
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.impl DerefToPyAny for RiRouter
impl ExtractPyClassWithClone for RiRouter
Auto Trait Implementations§
impl !Freeze for RiRouter
impl RefUnwindSafe for RiRouter
impl Send for RiRouter
impl Sync for RiRouter
impl Unpin for RiRouter
impl UnsafeUnpin for RiRouter
impl UnwindSafe for RiRouter
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§const NAME: &'static str = T::NAME
const NAME: &'static str = T::NAME
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more