pub struct Router { /* private fields */ }Expand description
Collects routes, then answers requests.
Implementations§
Source§impl Router
impl Router
pub fn new() -> Self
Sourcepub fn middleware(&mut self, middleware: impl Middleware) -> &mut Self
pub fn middleware(&mut self, middleware: impl Middleware) -> &mut Self
Add middleware. Inside a group it applies to that group’s routes;
at the top level it applies to every request, including 404s.
Sourcepub fn group(
&mut self,
prefix: &str,
define: impl FnOnce(&mut Router),
) -> &mut Self
pub fn group( &mut self, prefix: &str, define: impl FnOnce(&mut Router), ) -> &mut Self
Register routes under a shared prefix and middleware stack.
Sourcepub fn version(
&mut self,
version: &str,
define: impl FnOnce(&mut Router),
) -> &mut Self
pub fn version( &mut self, version: &str, define: impl FnOnce(&mut Router), ) -> &mut Self
Register one version of an API: a group under /{version} whose routes
know which version they are.
r.version("v1", |v1| { v1.get("/users", v1::users::index); });
r.version("v2", |v2| { v2.get("/users", v2::users::index); });A handler can read the version with req.api_version(), which lets one
handler serve two versions where the difference is small, and generated
documentation groups routes by it. Versioning by header instead of path
is crate::versioning::VersionHeader.
Sourcepub fn fallback(&mut self, handler: impl Handler) -> &mut Self
pub fn fallback(&mut self, handler: impl Handler) -> &mut Self
The response when nothing matched. Defaults to a plain 404.
pub fn route( &mut self, method: Method, pattern: &str, handler: impl Handler, ) -> RouteHandle<'_>
pub fn get(&mut self, pattern: &str, handler: impl Handler) -> RouteHandle<'_>
pub fn post(&mut self, pattern: &str, handler: impl Handler) -> RouteHandle<'_>
pub fn put(&mut self, pattern: &str, handler: impl Handler) -> RouteHandle<'_>
pub fn patch(&mut self, pattern: &str, handler: impl Handler) -> RouteHandle<'_>
pub fn delete( &mut self, pattern: &str, handler: impl Handler, ) -> RouteHandle<'_>
Sourcepub fn resource<'r>(&'r mut self, base: &str) -> Resource<'r>
pub fn resource<'r>(&'r mut self, base: &str) -> Resource<'r>
Start a RESTful resource: r.resource("/posts").index(..).show(..).
Sourcepub fn finalize(&mut self)
pub fn finalize(&mut self)
Sort routes so lookups are deterministic. Called once before serving.