5 个版本

0.8.1 2023 年 9 月 9 日
0.8.0 2023 年 8 月 19 日
0.7.6 2023 年 8 月 5 日
0.7.5 2023 年 7 月 30 日
0.7.0 2023 年 7 月 28 日

#444 in HTTP 服务器

MIT 许可证

33KB
731

Maria.rs,一个类似于 ExpressJs 的简单 Rust 框架

为什么?

  • 玛丽亚是为从 Nodejs 切换到 Rust 的 Web 开发者开发的,你可以轻松地适应 Maria.rs 代码。

它包括什么?

  • 路由器
  • JSON 处理
  • 处理器
  • 异步
  • 特质
  • 多线程

示例

  • Hello World 示例
use maria::{ Request, Response, Router, handler, HandlerFn, Arc, Mutex};

#[tokio::main]
async fn main(){

    //defining first handler
    let home: HandlerFn = handler!(_req, res, {
        res.send_html("<h1>Hello from Maria!</h1>");
    });

    // init the router
    let mut router = Router::new();

    // add our handler to router
    router.get("/", vec![home]);

    // that's it!
    router.listen(8080).await;
}

发布说明

0.8.1

添加了 Router.r#use。

  • 我不能将其命名为 Router.use,因为 Rust 已经有一个关键字 use。
  • 但你可以使用 Router.r#use();
  • 与 expressjs Router.use 方法相同。
  • 你可以为所有方法和所有路径定义某些内容
  • 示例
  •   router.r#use(vec![handler!(_req,_res,{
          println!("Something has came!");
      })]);
    
  • 此外,readme 也更新了新的处理器!用法

0.8.0

添加了新的处理器!宏来定义处理器,快速头更改

  • 现在你可以使用处理器!宏定义处理器,示例

  •   let home: HandlerFn = handler!(_req, res, {
          res.send_text("Hello world!");
      })
    
  • 添加了 2 个示例

  • 添加了基本功能文档

  • 到此为止。此外,文档将在下一个版本中到来。

0.7.6

添加了路径参数通配符。

  • 路径参数 /:*param_key 添加。
  • 通配符可以取任何参数
  • 例如:file/:*path -> file/folderpath/anotherfolder/file.txt
  • 参数: *path: folderpath/anotherfolder/file.txt

0.7.5

快速修复?

  • 问题是它在进入处理函数时会耗尽路由。
  • 但排空会将所有内部 vec 耗尽到另一个 vec 中。
  • 因此,这个问题在响应路由后会导致 404。
  • 还删除了一个小的调试日志。

0.7.4

准备发布!

  • 添加了新的闭包类型处理器。
  • 一些快速死锁修复。
  • 完全多线程。
  • Cargo.toml 准备发布!
  • 一些警告修复。

依赖项

~3–10MB
~91K SLoC