3 个版本
0.1.2 | 2024年4月16日 |
---|---|
0.1.1 | 2024年4月14日 |
0.1.0 | 2024年4月14日 |
#2 在 #web-kit
每月 26 次下载
67KB
1K SLoC
nano-rs 是一个轻量级、非侵入式的基于 Rust 的 Web 服务组件,旨在提供快速高效的开发体验。通过减少配置负担,您可以更专注于实现业务逻辑。
- 轻量级:通过精简设计确保快速启动和低资源消耗。
- 非侵入式:框架的设计允许无缝集成到现有的 Rust 项目中,而无需担心干扰业务逻辑。
- 约定优于配置:框架采用“智能默认值”方法,为常见场景提供预设配置。这意味着您几乎无需配置即可开始,但仍提供足够的配置选项以满足特定需求,确保最大限度的灵活性和可扩展性。
- 业务导向:我们的目标是简化 Web 服务的开发过程。通过减少繁琐的配置任务,您可以更专注于实现业务逻辑,从而提高项目开发的效率和质量。
环境要求
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