swagger_generator_flutter/REMOVE_API_PATHS_SUMMARY.md

6.0 KiB
Raw Blame History

ApiPaths 生成功能移除总结

📋 移除目标

移除 ApiPaths 文件(api_paths.dart)的生成功能,简化代码生成器。

移除日期: 2025-11-05
状态: 已完成


已移除的内容

1. 命令选项

移除前:

const CommandOption(
  name: 'endpoints',
  shortName: 'e',
  description: '生成API端点常量',
  type: OptionType.flag,
),

移除后: 已删除

2. 生成逻辑

移除前:

// 生成端点代码
if (options.generateEndpoints) {
  progress('正在生成API端点常量...');
  final generator = EndpointCodeGenerator(document);
  final code = generator.generate();
  final filePath = '$fullOutputDir/api_paths.dart';
  await FileUtils.writeFile(filePath, code);
  success('API端点常量已保存到: $filePath');
  generatedFiles++;
}

移除后: 已删除

3. 生成选项类

移除前:

class GenerateOptions {
  final bool generateEndpoints;
  final bool generateModels;
  // ...
}

移除后:

class GenerateOptions {
  final bool generateModels;
  final bool generateDocs;
  final bool generateApi;
  // ...
}

4. 导入语句

移除前:

import '../generators/endpoint_code_generator.dart';

移除后: 已删除

5. 配置相关

移除前:

static const String defaultEndpointsFile = 'generated_api_paths.dart';

static const Map<String, dynamic> defaultGenerateOptions = {
  'generateEndpoints': true,
  // ...
};

移除后: 已删除

6. 类型验证器

移除前:

enum CodeType { model, endpoints, documentation }

case CodeType.endpoints:
  // 验证逻辑
  break;

移除后:

enum CodeType { model, documentation }

7. 未使用的方法

移除: _detectApiVersion() 方法(未使用)


📁 文件变更清单

修改的文件

  1. lib/commands/generate_command.dart

    • 移除 --endpoints 选项
    • 移除端点生成逻辑
    • 移除 EndpointCodeGenerator 导入
    • 更新 GenerateOptions
    • 移除 _detectApiVersion() 方法
  2. lib/core/config.dart

    • 移除 defaultEndpointsFile 常量
    • 移除 generateEndpoints 配置项
  3. lib/utils/type_validator.dart

    • 移除 CodeType.endpoints 枚举值
    • 移除相关验证逻辑
  4. USAGE_AS_DEV_DEPENDENCY.md

    • 移除 --endpoints 选项说明
    • 移除 api_paths.dart 文件结构说明

保留的文件(未修改)

  • lib/generators/endpoint_code_generator.dart - 生成器类文件保留(未使用)
  • lib/utils/string_utils.dart - generateEndpointName() 方法保留(可能被其他功能使用)

📊 移除效果

代码简化

指标 移除前 移除后 改善
命令选项 8 个 7 个 减少 1 个
生成选项字段 6 个 5 个 减少 1 个
生成逻辑块 4 个 3 个 减少 1 个
配置项 6 个 5 个 减少 1 个

生成的文件

移除前:

generator/
├── api_paths.dart          ❌ 不再生成
├── api/
├── api_models/
└── api_documentation.md

移除后:

generator/
├── api/
├── api_models/
└── api_documentation.md

保留的功能

完全保留

  1. API 接口生成 (--api)

    • Retrofit 风格 API 接口
    • 版本化 API 支持
  2. 数据模型生成 (--models)

    • 请求模型
    • 响应模型
    • 参数模型
    • 枚举类型
  3. API 文档生成 (--docs)

    • Markdown 格式文档
    • 完整的 API 说明

📋 命令选项更新

移除前

dart run swagger_generator_flutter generate --endpoints  # ❌ 已移除
dart run swagger_generator_flutter generate --models
dart run swagger_generator_flutter generate --api
dart run swagger_generator_flutter generate --docs

移除后

dart run swagger_generator_flutter generate --models
dart run swagger_generator_flutter generate --api
dart run swagger_generator_flutter generate --docs
dart run swagger_generator_flutter generate --all  # 生成所有(不包含 endpoints

🎯 使用建议

替代方案

如果需要 API 路径常量,可以考虑:

  1. 使用生成的 API 接口

    • 生成的 Retrofit API 接口已经包含了路径信息
    • 路径在 @GET/@POST/@PUT/@DELETE 注解中
  2. 手动定义常量

    class ApiPaths {
      static const String getUser = '/api/v1/users';
      static const String createUser = '/api/v1/users';
    }
    
  3. 从生成的 API 接口提取

    • 使用代码分析工具从生成的 API 文件中提取路径

测试验证

测试场景

  1. 生成所有文件 - 正常工作,不生成 api_paths.dart
  2. 生成 API - 正常工作
  3. 生成模型 - 正常工作
  4. 生成文档 - 正常工作
  5. 命令帮助 - 不显示 --endpoints 选项

测试命令

cd example/as_dev_dependency
dart run swagger_generator_flutter generate --help
dart run swagger_generator_flutter generate --all

结果: 正常工作,不再生成 api_paths.dart


📚 相关文件

已修改

  1. lib/commands/generate_command.dart
  2. lib/core/config.dart
  3. lib/utils/type_validator.dart
  4. USAGE_AS_DEV_DEPENDENCY.md

未修改(保留)

  • lib/generators/endpoint_code_generator.dart - 生成器类(未使用,可后续删除)
  • lib/utils/string_utils.dart - generateEndpointName() 方法(可能被其他功能使用)

总结

移除完成:

  • 移除了 --endpoints 命令选项
  • 移除了端点生成逻辑
  • 移除了相关配置项
  • 更新了文档

保留功能:

  • API 接口生成
  • 数据模型生成
  • API 文档生成

状态: 移除完成,功能正常

现在代码生成器更加精简,不再生成 ApiPaths 文件!