# XY Swagger Generator - 项目概览 ## 📋 项目简介 XY Swagger Generator 是一个专为 Flutter 开发优化的 OpenAPI 3.0 代码生成器,旨在自动化 API 接口和数据模型的生成过程,提升开发效率并确保代码质量。 ### 🎯 设计目标 - **标准化优先**: 严格遵循 OpenAPI 3.0 规范,确保与后端 API 文档完全一致 - **类型安全**: 生成强类型 Dart 代码,在编译时发现潜在问题 - **高性能**: 支持大型 API 文档的高效解析和代码生成 - **企业级**: 提供完整的验证、缓存、监控和错误处理机制 ## 🏗️ 核心架构 ### 架构层次 ``` 命令行输入 ↓ SwaggerCLI / GenerateCommand(合并多 Swagger、处理版本与 Tag 过滤) ↓ SwaggerDataParser(下载/解析+缓存+性能监测) ↓ 生成器层(ModelCodeGenerator / RetrofitApiGenerator) ↓ 校验与工具(Enhanced/Schema Validator、ConfigLoader、FileUtils、StringUtils) ↓ 落盘输出(按版本与模型类别组织) ``` ### 核心组件 #### 1. 命令与配置 - **SwaggerCLI / GenerateCommand**: 注册命令、展示帮助、执行生成,支持多 Swagger 合并、版本化输出、Tag 过滤和忽略列表 - **ConfigLoader / SwaggerConfig**: 解析 `generator_config.yaml`,提供 swagger_urls 顺序合并、输出目录、版本提取正则、ApiClient 命名、BaseResult 导入等配置 #### 2. 解析器 (Parsers) - **SwaggerDataParser**: 支持 http(s) 与 file:// 源的 OpenAPI 解析,内置缓存与性能监测,解析 controllers/tags/schema 依赖 #### 3. 验证器 (Validators) - **SchemaValidator / EnhancedValidator**: 基础与增强校验器,用于在生成前验证文档一致性 #### 4. 生成器 (Generators) - **ModelCodeGenerator**: 按 request/result/enums/parameters 分类生成模型,分页模型自动替换为 `BasePageResult`,响应模型补全字符串/列表默认值 - **RetrofitApiGenerator**: 支持按 tag 拆分、多版本目录与统一 ApiClient,自动生成查询参数实体并处理版本化类名 - **DocumentationGenerator**: 输出 Markdown API 文档与统计摘要 #### 5. 工具类 (Utils) - **CacheManager / PerformanceMonitor**: 缓存解析结果并记录耗时 - **FileUtils / StringUtils**: 路径解析(基于配置文件目录)、命名转换、文件写入等 ## 🔧 技术特性 ### 生成行为 - 支持按顺序合并多个 `swagger_urls`,后者覆盖前者(适合 v1→v2 升级) - 版本化输出:路径按版本分目录,v2+ 类名自动追加 `V2`/`V3` 后缀,统一 ApiClient 聚合各版本 - Tag 过滤与模型裁剪:`included_tags`/`excluded_tags` 与依赖分析确保只生成实际使用的模型 - 分页识别:检测 `total/items` 模式并替换为 `BasePageResult`,包装在 `BaseResult` - 查询参数实体:GET 查询参数超过 4 个时自动生成 parameters 类,集中导出 - 忽略列表与相对路径:`ignored_directories/files` 控制落盘,路径基于配置文件所在目录解析 - BaseResult/BasePageResult 导入可配置,模型导出自动补全统一的 index.dart ### 质量保障 - 模型使用 `@JsonSerializable(checked: true, includeIfNull: false)`,字符串/非空列表默认值自动补齐(响应模型) - Request/Response/Enums/Parameters 分类生成,分页模型避免重复定义 - 生成器提供基本语法校验与类型推断,保持 Dart 命名规范(类名 PascalCase,字段 camelCase) - 文档生成器输出接口统计、控制器分组与示例,辅助对齐后端文档 ### 性能与观测 - CacheManager 缓存解析结果,避免重复请求 Swagger 源 - PerformanceMonitor 记录获取/解析耗时,生成流程有摘要 (SUMMARY.md) - 文件写入前统一检查跳过策略,目录按需创建,减少无效 IO ## 📊 性能与可观测性 - 解析层通过 PerformanceMonitor 记录获取/解析耗时,并复用 CacheManager 结果避免重复网络请求 - 多文档合并时会输出模型/路径统计与覆盖提示,便于确认版本覆盖关系 - 生成结束会输出 SUMMARY.md 与控制台摘要,包含控制器、路径、模型数量 - 文件写入前的跳过策略减少无意义的 IO,提升重复生成时的稳定性 ## 🎯 应用场景 ### 适用项目类型 - **企业级 Flutter 应用**: 大量 API 接口,需要标准化管理 - **多人协作项目**: 需要统一的代码风格和开发规范 - **快速迭代项目**: API 变更频繁,需要快速同步 - **微服务架构**: 多个服务的 API 需要统一管理 ### 团队规模 - **小型团队** (2-5人): 提升开发效率,减少重复工作 - **中型团队** (5-20人): 统一开发标准,提升协作效率 - **大型团队** (20+人): 企业级管理,确保代码质量和一致性 ## 🚀 核心优势 ### 1. 开发效率提升 - **自动化程度**: 95% 的 API 代码自动生成 - **开发时间节省**: 减少 70%+ 的 API 相关开发时间 - **错误率降低**: 类型相关错误减少 90%+ ### 2. 代码质量保证 - **类型安全**: 编译时类型检查,避免运行时错误 - **标准一致**: 统一的代码风格和命名规范 - **文档同步**: API 文档与代码自动保持同步 ### 3. 维护成本降低 - **变更响应**: API 变更响应时间从小时级降到分钟级 - **技术债务**: 标准化代码结构,易于维护和扩展 - **团队协作**: 统一的开发流程和代码规范 ## 📈 发展路线 ### 当前版本 (v2.1.x) - ✅ dev dependency 场景的 CLI 入口与可执行别名 - ✅ 多 Swagger 顺序合并与版本化 API 输出 - ✅ Tag 过滤、忽略策略、BaseResult/BasePageResult 导入配置 - ✅ 示例项目与基础测试脚本(tests/) ### 后续计划 - 🔄 提升自动化测试覆盖与生成结果校验 - 🔄 完善配置校验与错误提示体验 - 🔄 持续同步 README/示例与最新生成逻辑 ## 🤝 社区与支持 ### 文档资源 - [项目主文档](../README.md) - [使用指南](./USAGE_GUIDE.md) - [API 参考文档](./API_REFERENCE.md) - [快速参考](../QUICK_REFERENCE.md) - [配置模板](../generator_config.template.yaml) ### 贡献方式 - 提交功能前运行 `dart run swagger_generator_flutter generate --all` 以及必要的 `build_runner` - 在 Issue/PR 中附上配置片段与最小示例(可参考 example/) - 变更生成规则时同步更新 README 与 docs/ --- **项目维护者**: Max **最后更新**: 2025-11-09 **文档版本**: v2.1