swagger_generator_flutter/docs/API_REFERENCE.md

12 KiB
Raw Blame History

API 参考文档

📚 核心 API 类库

🔧 解析器 (Parsers)

PerformanceParser

高性能 OpenAPI 文档解析器,支持并行处理和性能监控。

import 'package:swagger_generator_flutter/swagger_generator_flutter.dart';

// 创建解析器
final parser = PerformanceParser(
  config: ParseConfig(
    enablePerformanceStats: true,   // 启用性能统计
    enableParallelParsing: true,    // 启用并行解析
    enableCaching: true,            // 启用缓存
    maxConcurrency: 4,              // 最大并发数
    enableMemoryOptimization: true, // 内存优化
  ),
);

// 解析文档
final jsonString = await File('swagger.json').readAsString();
final document = await parser.parseDocument(jsonString);

// 获取性能统计
final stats = parser.lastStats;
print('解析时间: ${stats?.totalTime.inMilliseconds}ms');
print('路径数量: ${stats?.pathCount}');
print('吞吐量: ${stats?.bytesPerSecond.toStringAsFixed(2)} bytes/s');

主要方法:

方法 描述 返回类型
parseDocument(String jsonString) 解析 OpenAPI 文档 Future<SwaggerDocument>
parseDocumentFromFile(String filePath) 从文件解析文档 Future<SwaggerDocument>
validateAndParse(String jsonString) 验证并解析文档 Future<SwaggerDocument>

配置选项:

class ParseConfig {
  final bool enablePerformanceStats;    // 启用性能统计
  final bool enableParallelParsing;     // 启用并行解析
  final bool enableStreamParsing;       // 启用流式解析
  final bool enableCaching;             // 启用缓存
  final int maxConcurrency;             // 最大并发数
  final bool enableMemoryOptimization;  // 内存优化
  final Duration cacheTimeout;          // 缓存超时时间
}

🏭 生成器 (Generators)

RetrofitApiGenerator

基于 Retrofit 注解的 API 代码生成器,支持按 tag 拆分与多版本输出。

import 'package:swagger_generator_flutter/swagger_generator_flutter.dart';

// 创建生成器
final generator = RetrofitApiGenerator(
  className: 'ApiService',           // API 服务类名
  useRetrofit: true,                  // 使用 Retrofit 注解
  useDio: true,                       // 使用 Dio
  splitByTags: true,                  // 按 tag 拆分
  versionedApi: true,                 // 多版本输出
);

// 生成代码
final generatedCode = generator.generateFromDocument(document);

// 保存到文件
await File('lib/api/api_service.dart').writeAsString(generatedCode);

主要方法:

方法 描述 返回类型
generateFromDocument(SwaggerDocument doc) 从文档生成代码 String
generateModularApis(SwaggerDocument doc) 生成模块化 API Map<String, String>
generateModels(SwaggerDocument doc) 生成数据模型 Map<String, String>
generateUtils(SwaggerDocument doc) 生成工具类 String

配置选项:

class RetrofitApiGenerator {
  final String className;    // 生成的类名
  final bool useRetrofit;    // 是否使用 Retrofit 注解
  final bool useDio;         // 是否使用 Dio
  final bool splitByTags;    // 是否按 tag 拆分
  final bool versionedApi;   // 是否按版本输出
}

性能生成器(已移除)

该项目已简化,移除了 PerformanceGenerator。请使用 RetrofitApiGenerator 作为主要生成器。

final generator = RetrofitApiGenerator(
  className: 'ApiService',
  useRetrofit: true,
  useDio: true,
  splitByTags: true,
);

final code = generator.generateFromDocument(document);

验证器 (Validators)

EnhancedValidator

增强型文档验证器,提供详细的错误报告和修复建议。

import 'package:swagger_generator_flutter/swagger_generator_flutter.dart';

// 创建验证器
final validator = EnhancedValidator(
  strictMode: false,              // 严格模式
  includeWarnings: true,          // 包含警告
  enableAutoFix: true,            // 启用自动修复
  customRules: [                  // 自定义验证规则
    RequiredFieldRule(),
    NamingConventionRule(),
  ],
);

// 验证文档
final isValid = validator.validateDocument(document);

// 获取错误报告
final errors = validator.errorReporter.getErrorsBySeverity(ErrorSeverity.error);
final warnings = validator.errorReporter.getErrorsBySeverity(ErrorSeverity.warning);

// 生成详细报告
final report = validator.errorReporter.generateReport();
print(report);

错误级别:

enum ErrorSeverity {
  critical,  // 严重错误,阻止生成
  error,     // 错误,可能影响生成质量
  warning,   // 警告,建议修复
  info,      // 信息,仅供参考
}

内置验证规则:

规则 描述 级别
SchemaValidationRule Schema 定义验证 Error
ReferenceValidationRule 引用完整性验证 Critical
NamingConventionRule 命名规范验证 Warning
TypeConsistencyRule 类型一致性验证 Error
RequiredFieldRule 必填字段验证 Warning

🗄️ 缓存管理 (Cache)

当前版本不再内置 SmartCache请在业务侧按需实现缓存策略如内存缓存/磁盘缓存),或使用成熟的第三方库。

🔧 工具类 (Utils)

StringUtils

字符串处理工具类,提供命名转换和格式化功能。

import 'package:swagger_generator_flutter/swagger_generator_flutter.dart';

// 命名转换
final camelCase = StringUtils.toCamelCase('user_name');        // userName
final pascalCase = StringUtils.toPascalCase('user_name');      // UserName
final snakeCase = StringUtils.toSnakeCase('userName');         // user_name

// 类型转换
final dartType = StringUtils.openApiTypeToDart('integer');     // int
final nullableType = StringUtils.makeNullable('String');       // String?

// 文档注释生成
final comment = StringUtils.generateDocComment(
  'User login endpoint',
  parameters: ['username', 'password'],
  returns: 'LoginResult',
);

FileUtils

文件操作工具类,提供安全的文件读写功能。

import 'package:swagger_generator_flutter/swagger_generator_flutter.dart';

// 安全写入文件
await FileUtils.writeStringToFile(
  'lib/api/generated_api.dart',
  generatedCode,
  createDirs: true,        // 自动创建目录
  backup: true,           // 创建备份
);

// 批量写入文件
await FileUtils.writeMultipleFiles({
  'lib/api/user_api.dart': userApiCode,
  'lib/api/order_api.dart': orderApiCode,
  'lib/models/user.dart': userModelCode,
});

// 清理生成的文件
await FileUtils.cleanGeneratedFiles('lib/api/generated/');

📊 性能监控 (Performance)

PerformanceMonitor

性能监控器,提供详细的性能统计和分析。

import 'package:swagger_generator_flutter/swagger_generator_flutter.dart';

// 创建监控器
final monitor = PerformanceMonitor();

// 开始监控
monitor.startOperation('parse_document');
// ... 执行操作
monitor.endOperation('parse_document');

// 获取统计信息
final stats = monitor.getOperationStats('parse_document');
print('操作次数: ${stats.count}');
print('平均耗时: ${stats.averageTime.inMilliseconds}ms');
print('最大耗时: ${stats.maxTime.inMilliseconds}ms');

// 生成性能报告
final report = monitor.generateReport();
print(report);

🔄 完整使用流程

基本使用流程

import 'dart:io';
import 'package:swagger_generator_flutter/swagger_generator_flutter.dart';

Future<void> generateApiCode() async {
  // 1. 创建解析器
  final parser = PerformanceParser(
    config: ParseConfig(
      enablePerformanceStats: true,
      enableCaching: true,
    ),
  );

  // 2. 创建验证器
  final validator = EnhancedValidator(
    includeWarnings: true,
  );

  // 3. 创建生成器
  final generator = RetrofitApiGenerator(
    className: 'ApiService',
    splitByTags: true,
  );

  try {
    // 4. 解析文档
    final jsonString = await File('swagger.json').readAsString();
    final document = await parser.parseDocument(jsonString);

    // 5. 验证文档
    final isValid = validator.validateDocument(document);
    if (!isValid) {
      final report = validator.errorReporter.generateReport();
      print('验证失败:\n$report');
      return;
    }

    // 6. 生成代码
    final generatedCode = generator.generateFromDocument(document);

    // 7. 保存文件
    await File('lib/api/api_service.dart').writeAsString(generatedCode);

    print('✅ 代码生成完成!');
    
    // 8. 显示性能统计
    final stats = parser.lastStats;
    if (stats != null) {
      print('解析时间: ${stats.totalTime.inMilliseconds}ms');
      print('生成的路径数: ${stats.pathCount}');
    }
  } catch (e, stackTrace) {
    print('❌ 生成失败: $e');
    print('堆栈跟踪: $stackTrace');
  }
}

高级使用流程 (企业级)

Future<void> generateEnterpriseApiCode() async {
  // 1. 配置高性能解析器
  final parser = PerformanceParser(
    config: ParseConfig(
      enablePerformanceStats: true,
      enableParallelParsing: true,
      enableCaching: true,
      maxConcurrency: 8,
      enableMemoryOptimization: true,
    ),
  );

  // 2. 配置增强验证器
  final validator = EnhancedValidator(
    strictMode: true,
    includeWarnings: true,
    enableAutoFix: true,
    customRules: [
      RequiredFieldRule(),
      NamingConventionRule(),
      TypeConsistencyRule(),
    ],
  );

  // 3. 配置生成器(推荐)
  final generator = RetrofitApiGenerator(
    className: 'ApiService',
    splitByTags: true,
  );

  try {
    // 4. 解析文档
    final jsonString = await File('swagger.json').readAsString();
    final document = await parser.parseDocument(jsonString);

    // 5. 验证文档
    final isValid = validator.validateDocument(document);
    if (!isValid) {
      final errors = validator.errorReporter
          .getErrorsBySeverity(ErrorSeverity.critical);
      if (errors.isNotEmpty) {
        throw Exception('文档包含严重错误,无法继续生成');
      }
    }

    // 6. 生成代码(单文件或模块化)
    final code = generator.generateFromDocument(document);

    // 7. 保存生成的文件
    await File('lib/api/api_service.dart').writeAsString(code);

    print('✅ 企业级代码生成完成!');
    
    // 9. 生成性能报告
    final performanceReport = parser.generatePerformanceReport();
    await File('reports/performance_report.md')
        .writeAsString(performanceReport);
    
    // 10. 生成验证报告
    final validationReport = validator.errorReporter.generateReport();
    await File('reports/validation_report.md')
        .writeAsString(validationReport);

  } catch (e, stackTrace) {
    print('❌ 企业级生成失败: $e');
    print('堆栈跟踪: $stackTrace');
  }
}

🔍 错误处理和调试

常见错误类型

// 解析错误
try {
  final document = await parser.parseDocument(jsonString);
} on SwaggerParseException catch (e) {
  print('解析错误: ${e.message}');
  print('错误位置: ${e.location}');
  print('修复建议: ${e.suggestion}');
}

// 验证错误
try {
  final isValid = validator.validateDocument(document);
} on ValidationException catch (e) {
  print('验证错误: ${e.message}');
  print('错误字段: ${e.fieldPath}');
  print('期望值: ${e.expectedValue}');
  print('实际值: ${e.actualValue}');
}

// 生成错误
try {
  final code = generator.generateFromDocument(document);
} on CodeGenerationException catch (e) {
  print('生成错误: ${e.message}');
  print('错误类型: ${e.errorType}');
  print('相关对象: ${e.relatedObject}');
}

调试工具

// 启用调试模式
final parser = PerformanceParser(
  config: ParseConfig(
    enableDebugMode: true,        // 启用调试模式
    enableVerboseLogging: true,   // 详细日志
    logLevel: LogLevel.debug,     // 日志级别
  ),
);

// 性能分析
final profiler = PerformanceProfiler();
profiler.startProfiling();
// ... 执行操作
final profile = profiler.endProfiling();
print('性能分析: ${profile.summary}');

// 内存分析
final memoryAnalyzer = MemoryAnalyzer();
final usage = memoryAnalyzer.getCurrentUsage();
print('内存使用: ${usage.totalMemory}MB');
print('缓存占用: ${usage.cacheMemory}MB');

文档版本: v3.0 最后更新: 2025-11-21 维护者: Max