obsidian

Crates.ioobsidian
lib.rsobsidian
version0.2.2
sourcesrc
created_at2018-10-04 17:11:40.650589
updated_at2020-05-03 08:27:38.096381
descriptionErgonomic async http framework for amazing, reliable and efficient web
homepagehttps://obsidian-rs.github.io
repositoryhttps://github.com/obsidian-rs/obsidian
max_upload_size
id88050
size166,289
Pai Lee Wai (plwai)

documentation

README

Obsidian Logo

Obsidian

Obsidian is an ergonomic Rust async http framework for reliable and efficient web.

Obsidian crate GitHub Actions status

Hello World

use obsidian::{context::Context, App};

#[tokio::main]
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;
}

Hello World (with handler function)

use obsidian::{context::Context, App, ContextResult};

async fn hello_world(ctx: Context) -> ContextResult {
    ctx.build("Hello World").ok()
}


#[tokio::main]
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;
}

JSON Response

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()
}

#[tokio::main]
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 Files

Example are located in example/main.rs.

Run Example

cargo run --example example

Current State

NOT READY FOR PRODUCTION YET!

Commit count: 228

cargo fmt