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
- roa-diesel, integration with diesel.
- roa-juniper, integration with juniper.
- roa-pg, integration with tokio-postgres.
- Works on stable Rust.
# Cargo.toml
[dependencies]
roa = "0.5.0"
async-std = { version = "1.5", features = ["attributes"] }
use roa::App;
use roa::preload::*;
use std::error::Error as StdError;
#[async_std::main]
async fn main() -> Result<(), Box<dyn StdError>> {
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.