⚡️ 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
}