Rust 编写的简单实用的 Web 后端框架
Salvo 构建于 tokio 和 hyper 之上. 仅仅需要 Rust 基础知识即可开发功能强大的后端服务.
我们的目标是: 编码最简单, 功能不缺失, 性能有保障.
use salvo::prelude::*;
#[fn_handler]
async fn hello_world(res: &mut Response) {
res.render("Hello world!");
}
#[tokio::main]
async fn main() {
let router = Router::new().get(hello_world);
let listener = TcpListener::bind("127.0.0.1:7878");
Server::new(listener).serve(router).await.unwrap();
}
http://localhost:7878
Hello world!
链式树状路由系统
链式树状路由系统允许你非常方便地写出链式表达式. 通过筛选器可以设置路由的具体匹配规则. 在路径选择器中支持正则表达式约束.
let debug_mode = true;
let admin_mode = true;
let router = Router::new()
.get(handle)
.push(
Router::with_path("users").hoop(auth).post(handle).push(
Router::with_path("< id>")
.post(handle)
.delete(handle),
),
)
.push(
Router::with_path("users")
.get(handle)
.push(Router::with_path("< id>").get(handle)),
)
.then(|router| {
if debug_mode {
router.push(Router::with_path("debug").get(handle))
} else {
router
}
})
.then(|router| {
if admin_mode {
parent.push(Router::with_path("admin").get(handle))
} else {
router
}
});