use axeon::{Response, Router, Server, ServerError};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct User {
name: String,
role: String,
}
fn main() {
let mut app = Server::new();
app.get("/", |_req| async {
Response::text("Welcome to Axeon API server!")
});
app.get("/users/:id", |req| async move {
let user_id = req.params.get("id").unwrap();
Response::text(format!("User ID: {}", user_id))
});
app.post("/users", |req| async move {
match req.body.json::<User>() {
Some(user) => Response::ok(&user),
None => Err(ServerError::BadRequest("Invalid JSON body".to_string())),
}
});
let mut api = Router::new();
api.get("/status", |_req| async {
Response::ok(&serde_json::json!({
"status": "operational",
"version": "1.0.0"
}))
});
app.mount("/api", api);
app.listen("127.0.0.1:3000")
.expect("Server failed to start")
}