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日

HTTP 服务器 中排名第 1181

Download history 20/week @ 2024-05-17 10/week @ 2024-05-24 9/week @ 2024-05-31 7/week @ 2024-06-07 9/week @ 2024-06-14 5/week @ 2024-06-21 229/week @ 2024-07-05 17/week @ 2024-07-12 2/week @ 2024-07-19 114/week @ 2024-08-02 155/week @ 2024-08-09 29/week @ 2024-08-16

每月下载量 298
用于 7 个库(直接使用 4 个)

MIT 许可证 MIT

56KB
694

ngyn (en·jn)

Crates.io Docs.rs License MSRV Made in Nigeria

一个基于 Rust 的渐进式框架,通过具有偏见的架构构建可扩展的网络服务器。

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

特性

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

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

示例

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

[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 来构建您的网络服务器,并且每个平台都会为构建您的网络服务器提供不同的一组功能。

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

贡献

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

许可证

Ngyn遵循MIT许可证,允许您自由使用、修改和分发此框架。

依赖项

~5–7.5MB
~162K SLoC