Roa is an async web framework inspired by koajs, lightweight but powerful.
- A lightweight, solid and well extensible core.
- Supports HTTP/1.x and HTTP/2.0 protocols.
- Full streaming.
- Highly extensible middleware system.
- Based on
hyper
, runtime-independent, you can chose async runtime as you like.
- Many useful extensions.
- Official runtime schemes:
- Transparent content compression (br, gzip, deflate, zstd).
- Configurable and nestable router.
- Named uri parameters(query and router parameter).
- Cookie and jwt support.
- HTTPS support.
- WebSocket support.
- Asynchronous multipart form support.
- Other middlewares(logger, CORS .etc).
- Integrations
- Works on stable Rust.
# Cargo.toml
[dependencies]
roa = "0.6"
tokio = { version = "1.15", features = ["rt", "macro"] }
use roa::App;
use roa::preload::*;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let app = App::new().end("Hello, World");
app.listen("127.0.0.1:8000", |addr| {
println!("Server is listening on {}", addr)
})?
.await?;
Ok(())
}
Refer to wiki for more details.