use athene::prelude::*;
#[derive(Debug, Serialize,Validate,Deserialize,Default)]
pub struct UserController {
pub email: String,
pub age: u16,
}
#[controller(prefix = "api", version = 1, name = "user")]
impl UserController {
#[delete("/{email}/{age}")]
pub async fn delete(&self, email: String, age: Option<u16>) -> impl Responder {
(
StatusCode::OK,
format!("email is : {}, and age is : {:?}", email, age),
)
}
#[get("/query_get")]
pub async fn query_get(&self, email: String, age: u16) -> impl Responder {
(200, Json(Self { email, age }))
}
#[get("/query")]
pub async fn query(&self, user: Query<Self>) -> impl Responder {
(200, Json(user.0))
}
#[post("/create")]
async fn create(&self, user: Json<Self>) -> impl Responder {
Ok::<_, Error>((200, user))
}
#[put("/update")]
#[post("/update")]
async fn update(&self, user: Form<Self>) -> impl Responder {
Ok::<_, Error>((200, user))
}
}
#[tokio::main]
pub async fn main() -> Result<()> {
let app = athene::new().router(|r|r.controller(UserController::default()));
app.listen("127.0.0.1:7878").await
}