athene 1.0.0

A simple and lightweight rust web framework based on hyper
Documentation

Useage

use athene::{Request,Response,Result};

#[derive(serde::Serialize,serde::Deserialize)]
pub struct User {
    name: String,
    age: i32,
}

pub async fn hello(req: Request) -> Result<Response>{
    let name: String = req.param("name").unwrap();
    Response::text(name)
}

pub async fn world(_req: Request) -> Result<Response>{
    Response::text("world")
}

pub async fn welcome(req: Request) -> Result<Response>{
    let user = req.query::<User>().unwrap();
    Response::json(&user)
}

pub async fn index(_req: Request) -> Result<Response>{
    Response::redirect("/api/world")
}

pub async fn login(req: Request) -> Result<Response>{
    let mut req = req;
    let user = req.parse::<User>().await?;
    Response::json(&user)
}

pub async fn upload(req: Request) -> Result<Response>{
    let mut req = req;
    let file = req.file("file").await;
    let name = file.name().unwrap();
    Response::text(name)
}

#[tokio::main]
pub async fn main(){
    let mut http = athene::new();
    http.get("/", index);
    http.get("/base",welcome);
    http.post("/upload", upload);
    // use middleware
    //http.middleware(middleware);

    http.group("/api", |base|{
        base.get("/hello/{name}", hello);
        base.get("/world", world);
        base.group("/user",|user|{
            user.post("/",login);
        });
    });

    http.listen("0.0.0.0:8081").await.unwrap();
}