#web-framework #web #http #框架 #服务器

oxidy

为Rust打造的快速且轻量级的Web框架

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服务器

Download history 1/week @ 2024-06-29 14/week @ 2024-07-06 108/week @ 2024-07-27

每月 122 次下载

MIT 协议

39KB
597

oxidy

为Rust打造的快速且轻量级的Web框架。

基于Tokio Tcp和Tokio运行时构建。

该项目深受 express.jskoa.jswarp.rs 的启发。

特性

  • 主要关注快速和性能
  • 极少的代码行数 (LOC)
  • 无不安全代码
  • Tokio Tcp
  • Tokio 运行时
  • 强大的路由
  • 允许使用中间件
  • 易于构建自己的中间件
  • 允许多线程
  • 允许并发
  • 完全支持异步/等待

安装

这是一个在 crate.io 上可用的crate (Rust模块)。在安装oxidy之前,请 下载并安装Rust

快速入门

  • oxidytokio 添加到您的 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