keiro

Crates.iokeiro
lib.rskeiro
version0.0.2
sourcesrc
created_at2021-04-14 14:11:53.175343
updated_at2021-06-13 14:03:41.555954
descriptionA lightweight router for Rust HTTP services.
homepage
repositoryhttps://github.com/giraffate/keiro
max_upload_size
id383977
size47,308
Takayuki Nakata (giraffate)

documentation

https://docs.rs/keiro

README

Keiro

Keiro is a lightweight router for Rust HTTP services. It is based on hyper.

Usage

use std::convert::Infallible;
use std::net::SocketAddr;

use hyper::{Body, Request, Response, Server};
use keiro::prelude::*;
use keiro::Router;

#[tokio::main]
async fn main() {
    let mut router = Router::new();
    router.get("/", index);
    router.get("/hello/:user1/from/:user2", hello);
    router.get("/hi/*path", hi);
    let addr = SocketAddr::from(([0, 0, 0, 0], 8080));

    Server::bind(&addr)
        .serve(router.into_service())
        .await
        .unwrap();
}

async fn index(_req: Request<Body>) -> Result<Response<Body>, Infallible> {
    Ok(Response::new(Body::from("Hello keiro!")))
}

async fn hello(req: Request<Body>) -> Result<Response<Body>, Infallible> {
    let params = req.params().unwrap();
    Ok(Response::new(Body::from(format!(
        "Hello {} from {}!",
        params.find("user1").unwrap(),
        params.find("user2").unwrap(),
    ))))
}

async fn hi(req: Request<Body>) -> Result<Response<Body>, Infallible> {
    let params = req.params().unwrap();
    Ok(Response::new(Body::from(format!(
        "Hello {}!",
        params.find("path").unwrap(),
    ))))
}

Contributing

  1. Fork
  2. Create a feature branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Run test suite with the cargo test command and confirm that it passes
  6. Run cargo fmt and pass cargo clippy
  7. Create new Pull Request

License

MIT license

Commit count: 28

cargo fmt