The Routerify
provides a lightweight and modular router implementation with middleware support for the existing Rust HTTP library hyper.rs.
There are a lot of web server frameworks for Rust applications out there and hyper.rs being comparably very fast and ready for production use
is one of them, and it provides only low level API. It doesn't provide any complex routing feature. So, Routerify
extends the hyper.rs library
by providing that missing feature without compromising any performance.
The Routerify
offers the following features:
hyper.rs
and ready for production use.Add this to your Cargo.toml
file:
toml
[dependencies]
routerify = "1.0"
A simple example using Routerify
with hyper.rs would look like the following:
```rust use hyper::{Body, Request, Response, Server}; // Import the routerify prelude traits. use routerify::prelude::*; use routerify::{Middleware, Router, RouterService}; use std::{convert::Infallible, net::SocketAddr};
// A handler for "/" page. async fn homehandler(: Request
) -> Result// A handler for "/about" page. async fn abouthandler(: Request
) -> Result// A middleware which logs an http request. async fn logger(req: Request
) -> Result// Create a Router<Body, Infallible>
for request body type hyper::Body
and for handler error type Infallible
.
fn router() -> Router
async fn main() { let router = router();
// Create a Service from the router above to handle incoming requests.
let service = RouterService::new(router);
// The address on which the server will be listening.
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
// Create a server by passing the created service to `.serve` method.
let server = Server::bind(&addr).serve(service);
println!("App is running on: {}", addr);
if let Err(err) = server.await {
eprintln!("Server error: {}", err);
} } ```
Please visit: Docs for an extensive documentation.
The common examples.
Your PRs and suggestions are always welcome.