Skip to content
/ roa Public

async web framework inspired by koajs, lightweight but powerful.

License

Notifications You must be signed in to change notification settings

Hexilee/roa

Repository files navigation

Roa

Roa is an async web framework inspired by koajs, lightweight but powerful.

Stable Test codecov wiki Rust Docs Crate version Download MSRV-1.54 License: MIT


Feature highlights

  • 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:
      • (Default) tokio runtime and TcpStream.
      • async-std runtime and TcpStream.
    • 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.
  • Works on stable Rust.

Get start

# 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.