Are we web yet?

I'm online!

Web programming in rust

show of hands who's doing it?

low-level

What I need from a web "framework"

routing / reverse routing

middlewares

request / response headers handling

serde trait (parsing / serialization + Content-Type support)

Nice to have

Iron

fn main() {
    // Ensure AES_KEY is loaded when starting
    let _ = key::get_key_from_env().unwrap();
    let mut router = Router::new();
 
    router.get("/", hello, "index");
    router.get("/encode", test_encode, "test-encode");
    router.post("/decode", test_decode, "test-decode");
    Iron::new(router).http("0.0.0.0:8081").unwrap();
}
fn test_decode(r: &mut Request) -> IronResult<Response> {
    let key_bytes = key::get_key_from_env().unwrap();
    if let Ok(result) = decrypt_then_decode(&mut r.body, &key_bytes) {
        Ok(Response::with((status::Ok, format!("{:?}", result))))
    } else {
        Ok(Response::with((status::BadRequest, "")))
    }
}

Nickel

Express-like. Some helpers for json, error handlers Mustache.rs support

Rouille

No middlewares, nice router. Not async yet.

Rocket

Inspired by yesod, amongst others

#[get("/")]
fn index() -> &'static str {
    "Hello, world!"
}

fn main() {
    rocket::ignite().mount("/", routes![index]).launch();
}

Good design overall (many small issues here and there), annoying when you know HTTP. (eg Responder which asks for status in addition to content-type and body). Disappointing templating

Overview

Try Clever Cloud

I'm online!