logo
0
0
Login

Swagger Rust SDK Generator

一个基于 Swagger/OpenAPI 3.0 规范自动生成 Rust SDK 的工具。

功能特性

  • 🚀 完整的 OpenAPI 3.0 支持 - 解析标准的 Swagger/OpenAPI 文档
  • 🛡️ 异步 HTTP 客户端 - 基于 reqwest 和 tokio 的现代异步架构
  • 📝 自动代码生成 - 生成完整的 Rust SDK,包含客户端、模型和错误处理
  • 🔧 CLI 工具 - 简单易用的命令行界面
  • 💡 最佳实践 - 生成的代码符合 Rust 编程规范
  • 📦 模块化设计 - 清晰的项目结构和代码组织

快速开始

安装

git clone <repository-url> cd swagger-rust-sdk-generator cargo build --release

使用方法

# 从 远程 Swagger 文档生成 Rust SDK cargo run -- -i https://api.cnb.cool/swagger.json -o cnb-rust -p rust-cnb # 从 Swagger 文档生成 Rust SDK cargo run -- -i examples/petstore.json -o output_dir -p my_api_client # 生成包含 README 和 LICENSE 的完整项目 cargo run -- -i examples/petstore.json -o output_dir --readme --license # 查看帮助信息 cargo run -- --help

参数说明

  • -i, --input <FILE> - 输入的 Swagger/OpenAPI JSON 文件路径
  • -o, --output <DIR> - 输出目录路径(默认:./generated-sdk)
  • -p, --package-name <NAME> - 生成的 Rust 包名(默认:api-client)
  • --readme - 生成 README.md 文件
  • --license - 生成 LICENSE 文件

示例

项目包含一个完整的示例,基于 Petstore API:

# 查看示例项目 cd demo cargo check # 运行示例代码 cargo run --example usage

生成的 SDK 结构

生成的 Rust SDK 包含以下文件:

output_dir/ ├── Cargo.toml # 项目配置 ├── README.md # 项目文档(使用 --readme 参数时生成) ├── LICENSE # 许可证文件(使用 --license 参数时生成) └── src/ ├── lib.rs # 库入口 ├── client.rs # HTTP 客户端 ├── models.rs # 数据模型 └── error.rs # 错误处理

技术栈

  • Rust - 系统编程语言
  • Serde - 序列化/反序列化
  • Reqwest - HTTP 客户端
  • Tokio - 异步运行时
  • Handlebars - 模板引擎
  • Clap - 命令行参数解析

开发

运行测试

# 运行单元测试 cargo test # 运行集成测试 cargo run --bin test_generator

项目结构

├── src/ │ ├── main.rs # CLI 入口 │ ├── swagger.rs # OpenAPI 解析 │ ├── generator.rs # 代码生成器 │ └── templates.rs # 模板定义 ├── examples/ │ └── petstore.json # 示例 API 文档 ├── demo/ # 完整示例项目 └── test_generator.rs # 测试程序

贡献

欢迎提交 Issue 和 Pull Request!

许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

更新日志

v0.2.0

  • 🆕 添加了 --readme--license 命令行参数
  • 🔧 默认不再自动生成 README.md 和 LICENSE 文件
  • ✨ 支持根据需要选择性生成文档文件

v0.1.0

  • 初始版本发布
  • 支持基本的 OpenAPI 3.0 解析
  • 生成异步 HTTP 客户端代码
  • 包含完整的示例和测试

About

一个基于 Swagger/OpenAPI 3.0 规范自动生成 Rust SDK 的工具

RustSDK
944.00 KiB
0 forks0 stars1 branches0 TagREADMEMIT license