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);
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();
}