Obsidian is an ergonomic Rust async http framework for reliable and efficient web.
```rust use obsidian::App;
async fn main() { let mut app: App = App::new(); let addr = ([127, 0, 0, 1], 3000).into();
app.get("/", |ctx: Context| async { ctx.build("Hello World").ok() });
app.listen(&addr, || {
{
println!("server is listening to {}", &addr);
}
}).await;
} ```
```rust use obsidian::{context::Context, App, ContextResult};
async fn hello_world(ctx: Context) -> ContextResult { ctx.build("Hello World").ok() }
async fn main() { let mut app: App = App::new(); let addr = ([127, 0, 0, 1], 3000).into();
app.get("/", hello_world);
app.listen(&addr, || {
println!("server is listening to {}", &addr);
})
.await;
} ```
```rust use obsidian::{context::Context, App, ContextResult}; use serde::*;
async fn get_user(ctx: Context) -> ContextResult { #[derive(Serialize, Deserialize)] struct User { name: String, };
let user = User {
name: String::from("Obsidian"),
};
ctx.build_json(user).ok()
}
async fn main() { let mut app: App = App::new(); let addr = ([127, 0, 0, 1], 3000).into();
app.get("/user", get_user);
app.listen(&addr, || {
println!("server is listening to {}", &addr);
})
.await;
}
```
Example are located in example/main.rs
.
cargo run --example example
NOT READY FOR PRODUCTION YET!