A lightweight router implementation with middleware support for the rust HTTP library hyper.
Add this to your Cargo.toml:
toml
[dependencies]
routerify = "0.1"
```rust use hyper::service::{makeservicefn, servicefn}; use hyper::{Body, Request, Response, Server}; use lazystatic::lazy_static; use routerify::{Middleware, Router}; use std::convert::Infallible; use std::net::SocketAddr;
lazystatic! { static ref APIROUTER: Router = Router::builder() .middleware(Middleware::pre(middlewarelogger)) .get("/users/:username/view", handleapi_users) .build() .unwrap(); }
lazystatic! { static ref ROUTER: Router = Router::builder() .middleware(Middleware::pre(middlewarelogger)) .get("/", handlehome) .router("/api", &*APIROUTER) .build() .unwrap(); }
async fn handleapiusers(_req: Request
) -> routerify::Resultasync fn middleware_logger(req: Request
) -> routerify::Resultasync fn handlehome(req: Request
) -> routerify::Resultasync fn main() {
let reqservice = makeservicefn(|conn| async {
Ok::<_, Infallible>(servicefn(|req: Request| async {
Ok::
let addr = SocketAddr::from(([127, 0, 0, 1], 3000)); let server = Server::bind(&addr) .serve(req_service);
println!("App is serving on: {}", server.local_addr()); if let Err(e) = server.await { eprintln!("Server Error: {}", e); } } ```