pub struct Router { /* private fields */ }Expand description
Router is a service that nests other services on chosen routes
For example:
let mut router = Router::new();
router.add("/hello", DefaultService);This will show the hello message on this route, and fire a 404 on others.
Routes can be of two types:
- exact (does not end with
/) - nested (ends with
/)
Exact route is a hashmap match, nested route matches anything under chosen route.
Nested route example:
router.add("/files/", FilesService::new("files"));This code will host all files in the “files” dir, under route /files/.
Note that it also matches just /files, and that nested routes strip their prefix -
so /files/something becomes /something in the route argument. Original route is still
accessible via req.route
Nested routes are implemented with a linear search, consider something more optimized if you have thousands of them
§Errors
When a route cannot be matched, Router fires a StatusCode(404)
Implementations§
Trait Implementations§
Source§impl HttpService for Router
impl HttpService for Router
Source§async fn request(
&self,
route: &str,
req: &HttpRequest,
body: &mut dyn HttpRead,
) -> HttpResult
async fn request( &self, route: &str, req: &HttpRequest, body: &mut dyn HttpRead, ) -> HttpResult
Serve the request Read more
Source§fn filter(&self, route: &str, req: &HttpRequest) -> HttpResult<()>
fn filter(&self, route: &str, req: &HttpRequest) -> HttpResult<()>
Checks if request is valid Read more
Auto Trait Implementations§
impl Freeze for Router
impl !RefUnwindSafe for Router
impl Send for Router
impl Sync for Router
impl Unpin for Router
impl !UnwindSafe for Router
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
Source§impl<T> HttpServiceRaw for Twhere
T: HttpService,
impl<T> HttpServiceRaw for Twhere
T: HttpService,
Source§fn request_raw<'a>(
&'a self,
route: &'a str,
req: &'a HttpRequest,
body: &'a mut dyn HttpRead,
) -> Pin<Box<dyn Future<Output = Result<HttpResponse, Box<dyn HttpError>>> + Send + 'a>>
fn request_raw<'a>( &'a self, route: &'a str, req: &'a HttpRequest, body: &'a mut dyn HttpRead, ) -> Pin<Box<dyn Future<Output = Result<HttpResponse, Box<dyn HttpError>>> + Send + 'a>>
Serve the request (dyn version)
Source§fn filter_raw(
&self,
route: &str,
req: &HttpRequest,
) -> Result<(), Box<dyn HttpError>>
fn filter_raw( &self, route: &str, req: &HttpRequest, ) -> Result<(), Box<dyn HttpError>>
Checks if request is valid (dyn version)