Get Started

Add the dependency with a single command:

cargo add aex cargo add tokio --features full 

Spin up an HTTP service in 30 seconds

use aex::http::router::Router as HttpRouter; use aex::server::Server; use aex::{_sync, http}; #[tokio::main] async fn main() -> anyhow::Result<()> { let addr: SocketAddr = "0.0.0.0:8080".parse()?; let mut router = HttpRouter::default(); router.get("/", _sync!(|_| "OK")); Server::default() .push(http!(router)) .start(addr) .await?; Ok(()) } 

For async handlers, just wrap them with _async!

use aex::http::router::Router as HttpRouter; use aex::server::Server; use aex::{_async, http}; #[tokio::main] async fn main() -> anyhow::Result<()> { let addr: SocketAddr = "0.0.0.0:8080".parse()?; let mut router = HttpRouter::default(); // Async closure: `_async!` supports await internally, and likewise needs no annotation router.get("/", _async!(|ctx| { let html = fetch_home_page().await; // any async logic ctx.html(&html); true })); Server::default() .push(http!(router)) .start(addr) .await?; Ok(()) }