swagger_generator_flutter/docs/API_REFERENCE.md

544 lines
14 KiB
Markdown

# API 参考文档
## 📚 核心 API 类库
### 🔧 解析器 (Parsers)
#### PerformanceParser
高性能 OpenAPI 文档解析器,支持并行处理和性能监控。
```dart
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>` |
**配置选项:**
```dart
class ParseConfig {
final bool enablePerformanceStats; // 启用性能统计
final bool enableParallelParsing; // 启用并行解析
final bool enableStreamParsing; // 启用流式解析
final bool enableCaching; // 启用缓存
final int maxConcurrency; // 最大并发数
final bool enableMemoryOptimization; // 内存优化
final Duration cacheTimeout; // 缓存超时时间
}
```
---
### 🏭 生成器 (Generators)
#### OptimizedRetrofitGenerator
优化的 Retrofit API 代码生成器,专为企业级项目设计。
```dart
import 'package:swagger_generator_flutter/swagger_generator_flutter.dart';
// 创建生成器
final generator = OptimizedRetrofitGenerator(
className: 'ApiService', // API 服务类名
generateModularApis: true, // 生成模块化 API
generateBaseResult: true, // 生成基础响应类型
generatePagination: true, // 生成分页支持
generateFileUpload: true, // 生成文件上传支持
baseResultType: 'BaseResult', // 基础响应类型名
pageResultType: 'BasePageResult', // 分页响应类型名
);
// 生成代码
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` |
**配置选项:**
```dart
class OptimizedRetrofitGenerator {
final String className; // 生成的类名
final bool generateModularApis; // 是否生成模块化 API
final bool generateBaseResult; // 是否生成基础响应类型
final bool generatePagination; // 是否生成分页支持
final bool generateFileUpload; // 是否生成文件上传支持
final String baseResultType; // 基础响应类型名
final String pageResultType; // 分页响应类型名
final List<String> excludeTags; // 排除的标签
final Map<String, String> typeMapping; // 类型映射
}
```
#### PerformanceGenerator
高性能代码生成器,支持并发生成和增量更新。
```dart
final generator = PerformanceGenerator(
maxConcurrency: 4, // 最大并发数
enableCaching: true, // 启用缓存
enableIncremental: true, // 启用增量生成
enableParallel: true, // 启用并行生成
cacheStrategy: CacheStrategy.smart, // 缓存策略
);
// 并行生成多个文件
final results = await generator.generateParallel(document, [
GenerationTask.apis,
GenerationTask.models,
GenerationTask.utils,
]);
```
---
### ✅ 验证器 (Validators)
#### EnhancedValidator
增强型文档验证器,提供详细的错误报告和修复建议。
```dart
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);
```
**错误级别:**
```dart
enum ErrorSeverity {
critical, // 严重错误,阻止生成
error, // 错误,可能影响生成质量
warning, // 警告,建议修复
info, // 信息,仅供参考
}
```
**内置验证规则:**
| 规则 | 描述 | 级别 |
|------|------|------|
| `SchemaValidationRule` | Schema 定义验证 | Error |
| `ReferenceValidationRule` | 引用完整性验证 | Critical |
| `NamingConventionRule` | 命名规范验证 | Warning |
| `TypeConsistencyRule` | 类型一致性验证 | Error |
| `RequiredFieldRule` | 必填字段验证 | Warning |
---
### 🗄️ 缓存管理 (Cache)
#### SmartCache
智能缓存管理器,支持多级缓存和自动清理。
```dart
import 'package:swagger_generator_flutter/swagger_generator_flutter.dart';
// 创建缓存
final cache = SmartCache<String>(
maxSize: 1000, // 最大缓存大小
strategy: CacheStrategy.smart, // 缓存策略
defaultTtl: Duration(hours: 1), // 默认过期时间
enablePersistence: true, // 启用持久化
);
// 使用缓存
cache.put('key', 'value', ttl: Duration(minutes: 30));
final value = cache.get('key');
// 获取统计信息
final stats = cache.getStats();
print('缓存命中率: ${(stats.hitRate * 100).toStringAsFixed(1)}%');
print('内存使用: ${stats.memoryUsage}');
```
**缓存策略:**
```dart
enum CacheStrategy {
lru, // LRU (最近最少使用)
lfu, // LFU (最少使用频率)
fifo, // FIFO (先进先出)
smart, // 智能策略 (结合多种算法)
}
```
---
### 🔧 工具类 (Utils)
#### StringUtils
字符串处理工具类,提供命名转换和格式化功能。
```dart
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
文件操作工具类,提供安全的文件读写功能。
```dart
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
性能监控器,提供详细的性能统计和分析。
```dart
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);
```
---
## 🔄 完整使用流程
### 基本使用流程
```dart
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 = OptimizedRetrofitGenerator(
className: 'ApiService',
generateModularApis: true,
generateBaseResult: 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');
}
}
```
### 高级使用流程 (企业级)
```dart
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 = PerformanceGenerator(
maxConcurrency: 4,
enableCaching: true,
enableIncremental: true,
enableParallel: true,
);
// 4. 配置智能缓存
final cache = SmartCache<SwaggerDocument>(
maxSize: 100,
strategy: CacheStrategy.smart,
defaultTtl: Duration(hours: 2),
);
try {
// 5. 解析和缓存文档
final cacheKey = 'swagger_document_v1';
var document = cache.get(cacheKey);
if (document == null) {
final jsonString = await File('swagger.json').readAsString();
document = await parser.parseDocument(jsonString);
cache.put(cacheKey, document);
}
// 6. 验证文档
final isValid = validator.validateDocument(document);
if (!isValid) {
final errors = validator.errorReporter
.getErrorsBySeverity(ErrorSeverity.critical);
if (errors.isNotEmpty) {
throw Exception('文档包含严重错误,无法继续生成');
}
}
// 7. 并行生成多个文件
final results = await generator.generateParallel(document, [
GenerationTask.apis,
GenerationTask.models,
GenerationTask.utils,
GenerationTask.documentation,
]);
// 8. 保存生成的文件
for (final entry in results.entries) {
final filePath = 'lib/api/generated/${entry.key}.dart';
await FileUtils.writeStringToFile(
filePath,
entry.value,
createDirs: true,
backup: true,
);
}
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');
}
}
```
---
## 🔍 错误处理和调试
### 常见错误类型
```dart
// 解析错误
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}');
}
```
### 调试工具
```dart
// 启用调试模式
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');
```
---
**文档版本**: v2.0
**最后更新**: 2025-01-24
**维护者**: Max