16个版本

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

410HTTP服务器

Download history 22/week @ 2024-05-20 1/week @ 2024-05-27 4/week @ 2024-06-17 167/week @ 2024-07-01 58/week @ 2024-07-08 71/week @ 2024-07-29 51/week @ 2024-08-05 149/week @ 2024-08-12

271 每月下载次数
用于 ngyn-swagger

MIT 许可证

67KB
827

ngyn (en·jn)

Crates.io Docs.rs License MSRV Made in Nigeria

一个用于构建可扩展Web服务器的Rust进度框架,采用有观点的架构。

关于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 许可证,允许您自由使用、修改和分发该框架。

依赖

~13–27MB
~415K SLoC