5个版本
0.2.2 | 2020年5月3日 |
---|---|
0.2.1 | 2020年4月26日 |
0.1.0 |
|
0.1.0-alpha.1 | 2019年12月31日 |
#32 in #http-framework
每月下载量 35次
105KB
2.5K SLoC
Obsidian
Obsidian 是一个为可靠和高效Web而设计的舒适Rust异步http框架。
你好世界
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;
}
你好世界(带处理函数)
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响应
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/main.rs
。
运行示例
cargo run --example example
当前状态
尚未准备好生产!
依赖关系
~14–28MB
~402K SLoC