18 个版本

0.4.4 2024 年 8 月 24 日
0.4.1 2024 年 7 月 7 日
0.3.0 2023 年 12 月 27 日
0.2.8 2023 年 11 月 26 日

#1740 in 过程宏

Download history 25/week @ 2024-05-20 7/week @ 2024-05-27 4/week @ 2024-06-10 8/week @ 2024-06-17 170/week @ 2024-07-01 62/week @ 2024-07-08 73/week @ 2024-07-29 51/week @ 2024-08-05 155/week @ 2024-08-12

279 每月下载量
2 个包中使用(通过 ngyn

MIT 许可证

105KB
1.5K SLoC

ngyn (en·jn)

Crates.io Docs.rs License MSRV Made in Nigeria

在 Rust 中构建可扩展 Web 服务器的渐进式框架。

有关 Ngyn 的更多信息,请参阅 文档

特性

  • 宏 API,用于将应用程序组织成可重用组件
  • 异步中间件,用于处理请求和响应
  • 异步路由支持,用于定义路由
  • 平台无关,支持多个库和框架

请注意,Ngyn 仍处于早期开发阶段,API 可能会更改。

示例

此示例演示了如何使用 Ngyn 和 Hyper 平台创建简单的 Web 服务器。

[dependencies]
ngyn = { version = "0.4" }

以下是代码

use ngyn::prelude::*;
use ngyn_hyper::HyperApplication;

#[controller]
struct MyController;

#[routes]
impl MyController {
    #[get("/")]
    fn index(&self) -> String {
        "Hello World!".to_string()
    }

    #[get("/hello/<name>")]
    fn hello(&self, param: Param) -> String {
        let name = param.get("name").unwrap();
        format!("Hello, {}!", name)
    }
}

#[module(controllers = [MyController])]
struct MyAppModule;

#[main]
async fn main() {
    let app = NgynFactory::<HyperApplication>::create::<MyAppModule>();
    let _ = app.listen("127.0.0.1:8080").await;
}

理念

描述

Ngyn 提出了一种有见解的、模块化的和可扩展的架构,主要受 NestJS 启发,并以模块的概念为中心——离散的、可重用的组件,共同塑造一个应用程序。这些模块,每个都处理特定的功能,可以嵌套形成功能层次结构。这种模块化设计简化了组织,并提高了各种项目中的重用性。

平台无关性

在Ngyn中,平台(更准确地说是平台引擎)指的是用于构建应用程序的底层库或框架。例如,您可以使用ActixWarpTide来构建您的Web服务器,这些平台中的每一个都会为构建您的Web服务器提供不同的功能集。

默认情况下,Ngyn使用Hyper作为其底层平台。然而,您并不局限于这一点,也可以选择创建自己的平台引擎。

贡献

Ngyn是一个开源项目,我们欢迎社区的贡献。请随时报告问题、建议改进或提交拉取请求,以帮助我们改进Ngyn。

许可

Ngyn遵循MIT许可协议,允许您自由地使用、修改和分发该框架。

依赖项

~5–7.5MB
~162K SLoC