3 个版本

0.1.2 2024年4月16日
0.1.1 2024年4月14日
0.1.0 2024年4月14日

#2#web-kit

每月 26 次下载

MIT 许可协议

67KB
1K SLoC

Contributors Forks Stargazers Issues

        nano-rs 是一个轻量级、非侵入式的基于 Rust 的 Web 服务组件,旨在提供快速高效的开发体验。通过减少配置负担,您可以更专注于实现业务逻辑。


  • 轻量级:通过精简设计确保快速启动和低资源消耗。
  • 非侵入式:框架的设计允许无缝集成到现有的 Rust 项目中,而无需担心干扰业务逻辑。
  • 约定优于配置:框架采用“智能默认值”方法,为常见场景提供预设配置。这意味着您几乎无需配置即可开始,但仍提供足够的配置选项以满足特定需求,确保最大限度的灵活性和可扩展性。
  • 业务导向:我们的目标是简化 Web 服务的开发过程。通过减少繁琐的配置任务,您可以更专注于实现业务逻辑,从而提高项目开发的效率和质量。
目录
  1. 环境要求
  2. 安装
  3. 快速开始
  4. 路线图
  5. 许可协议
  6. 联系方式
  7. 致谢

环境要求

MSRV >= 1.66

安装

  cargo add nano-rs

快速开始

Axum

  • 添加构建依赖项
[build-dependencies]
nano-rs = "0.1.0"
nano-rs-build = "0.1.0"
  • 添加 build.rs
use std::error::Error;
use nano_rs_build::core::NanoBuilder;
use nano_rs::axum::gen::gen_route::AxumGenRoute;

fn main() -> Result<(), Box<dyn Error>> {
    NanoBuilder::new(None).gen_api_route(AxumGenRoute::new());
    Ok(())
}
  • 将配置文件添加到您的目标目录(在示例中,它位于 etc/config.yaml
port: 8888
name: example
host: 127.0.0.1
  • 在项目中的任何地方使用宏(例如,在 api/pet 下)编写您的 API 代码,有关宏的详细信息,请参阅 示例(文档即将推出...)
#[get(path = "/store/name", layers = ["crate::layers::auth::auth_token1"])]
pub async fn get_store_name() -> Result<RestResp<String>, ServerError> {
    biz_ok("Doggy Store".to_string())
}
  • 运行构建一次(仅适用于项目的首次编译)
cargo build
  • 然后您将在您的 src/ 目录中获得名为 routes.rs 的文件。
  • 不要编辑 routes.rs,因为它将在每次构建时被覆盖。
  • 编辑 main.rs。(参考示例中的项目结构)
use axum::Router;
use nano_rs::axum::start::run;
use nano_rs::config::init_config_with_cli;
use nano_rs::config::rest::RestConfig;
use crate::routes::get_routes;

mod routes;
mod layers;
mod api;

#[tokio::main]
async fn main() {
    let rest_config = init_config_with_cli::<RestConfig>();
    let _guard = nano_rs::tracing::init_tracing(&rest_config);
    let service_context = ServiceContext {
        rest_config: rest_config.clone(),
    };
    let app = Router::new().nest(
        rest_config.base_path.as_str(),
        get_routes(service_context.clone(), rest_config.clone()),
    );
    run(app, rest_config).await
}

#[derive(Clone)]
pub struct ServiceContext {
    pub rest_config: RestConfig,
}
  • 运行您的 Web 应用程序
cargo run -- --config etc/config.yaml
  • 之后,您只需专注于编写业务逻辑代码;nano-rs 将自动生成路由并将其注册到 axum,让您专注于实现业务逻辑。

路线图

  • 自动生成 Axum 框架路由
  • Tracing 框架的默认配置
  • 预设常见的网络服务配置(通过 yaml 管理)
  • 自动生成 OpenApi

有关建议功能的全列表(以及已知问题),请参阅 开放问题

许可协议

遵循MIT许可证发布。更多信息,请参阅 LICENSE.txt

联系方式

致谢

依赖

~34–49MB
~799K SLoC