hypers 0.0.0-alpha

A simple rust web framework based on hyper 1.0.0-rc.4
Documentation

⚡️ Quick Start

use hypers::prelude::*;
use serde::{Serialize,Deserialize};

#[derive(Debug,Serialize,Deserialize)]
struct User {
    name: String,
    age: u16,
}

#[get("/home")]
pub async fn home(_req: Request) -> impl Responder {
    (200,"Home")
}

#[post("/login")]
pub async fn login(user: Json<User>) -> impl Responder {
    (200,user)
}

pub async fn about(_req: Request) -> impl Responder {
    (200,String::from("about"))
}

pub async fn logger_middleware(req: Request,res: Response) -> Result {
    let uri = req.uri().path();
    if uri != "/" {
        return Err(anyhow::Error::msg("NotFound"))
    }
    Ok(res)
}

fn user_router() -> Router {
    Router::new().route(vec![login])
}

fn router() -> Router{

    let router = Router::new();

    let router = router.route(vec![home]).get("/about",about);

    let router = router.middleware(logger_middleware);

    let router = router.group("/user",user_router());

    router
}

#[tokio::main]
async fn main() -> Result<()> {

    let router = router();

    let app = hypers::new(router);

    app.listen("127.0.0.1:7878").await
}