8个版本 (5个破坏性更新)
0.5.0 | 2022年11月16日 |
---|---|
0.4.0 | 2022年2月13日 |
0.3.1 | 2022年2月6日 |
0.2.1 | 2022年2月5日 |
0.0.1 | 2022年2月1日 |
#440 in HTTP服务器
每月 122 次下载
39KB
597 行
oxidy
为Rust打造的快速且轻量级的Web框架。
基于Tokio Tcp和Tokio运行时构建。
该项目深受 express.js、koa.js 和 warp.rs 的启发。
特性
- 主要关注快速和性能
- 极少的代码行数 (LOC)
- 无不安全代码
- Tokio Tcp
- Tokio 运行时
- 强大的路由
- 允许使用中间件
- 易于构建自己的中间件
- 允许多线程
- 允许并发
- 完全支持异步/等待
安装
这是一个在 crate.io 上可用的crate (Rust模块)。在安装oxidy之前,请 下载并安装Rust。
快速入门
- 将 oxidy 和 tokio 添加到您的 Cargo.toml 文件中的依赖项
[dependencies]
oxidy = "<version>"
tokio = { version = "<version>", features = ["full"] }
- 将以下代码粘贴到您的 src/main.rs 文件中
use oxidy::{Server, Context, Returns, route};
async fn route(mut c: Context) -> Returns {
c.response.body = "Hello World".to_owned();
(c, None)
}
#[tokio::main]
async fn main() {
let mut app = Server::new();
app.add(route!("get /", route));
app.run("127.0.0.1:3000").await;
}
- 使用 cargo run 在开发模式下运行服务器或使用 cargo run --release 在发布配置下运行服务器。
中间件
use std::time::Instant;
use oxidy::{Server, Context, Returns, route, middleware, tail};
async fn mid(mut c: Context) -> Returns {
let start = Instant::now();
println!("Middleware Function");
c.response.body = "Middleware Function".to_owned();
c.next = true;
tail!{
c,
{
println!("Tail Function");
c.response.body = "Tail Function".to_owned();
println!("Response Time: {:?}", Instant::now().duration_since(start));
c
}
}
}
async fn route(mut c: Context) -> Returns {
println!("Route Function");
c.response.body = "Hello World".to_owned();
(c, None)
}
#[tokio::main]
async fn main() {
let mut app = Server::new();
app.add(middleware!(mid));
app.add(route!("get /", route));
app.run("127.0.0.1:3000").await;
}
注意
- 在oxidy中,路由和中间件之间没有区别。它们都是相同且相同的。
- 尝试使用氧化
profile.release
配置以获得高度优化的构建。 Cargo.toml - 该项目目前仍处于 Alpha 阶段。
许可证
该项目采用 MIT | 查看许可证
贡献
除非您明确声明,否则您提交给此项目的任何有意贡献都应按照 MIT 许可,不附加任何其他条款或条件。
依赖项
~4–13MB
~140K SLoC