294 lines
6.0 KiB
Markdown
294 lines
6.0 KiB
Markdown
# ✅ ApiPaths 生成功能移除总结
|
||
|
||
## 📋 移除目标
|
||
|
||
移除 `ApiPaths` 文件(`api_paths.dart`)的生成功能,简化代码生成器。
|
||
|
||
**移除日期**: 2025-11-05
|
||
**状态**: ✅ 已完成
|
||
|
||
---
|
||
|
||
## ✅ 已移除的内容
|
||
|
||
### 1. 命令选项
|
||
|
||
**移除前**:
|
||
```dart
|
||
const CommandOption(
|
||
name: 'endpoints',
|
||
shortName: 'e',
|
||
description: '生成API端点常量',
|
||
type: OptionType.flag,
|
||
),
|
||
```
|
||
|
||
**移除后**: ✅ 已删除
|
||
|
||
### 2. 生成逻辑
|
||
|
||
**移除前**:
|
||
```dart
|
||
// 生成端点代码
|
||
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. 生成选项类
|
||
|
||
**移除前**:
|
||
```dart
|
||
class GenerateOptions {
|
||
final bool generateEndpoints;
|
||
final bool generateModels;
|
||
// ...
|
||
}
|
||
```
|
||
|
||
**移除后**:
|
||
```dart
|
||
class GenerateOptions {
|
||
final bool generateModels;
|
||
final bool generateDocs;
|
||
final bool generateApi;
|
||
// ...
|
||
}
|
||
```
|
||
|
||
### 4. 导入语句
|
||
|
||
**移除前**:
|
||
```dart
|
||
import '../generators/endpoint_code_generator.dart';
|
||
```
|
||
|
||
**移除后**: ✅ 已删除
|
||
|
||
### 5. 配置相关
|
||
|
||
**移除前**:
|
||
```dart
|
||
static const String defaultEndpointsFile = 'generated_api_paths.dart';
|
||
|
||
static const Map<String, dynamic> defaultGenerateOptions = {
|
||
'generateEndpoints': true,
|
||
// ...
|
||
};
|
||
```
|
||
|
||
**移除后**: ✅ 已删除
|
||
|
||
### 6. 类型验证器
|
||
|
||
**移除前**:
|
||
```dart
|
||
enum CodeType { model, endpoints, documentation }
|
||
|
||
case CodeType.endpoints:
|
||
// 验证逻辑
|
||
break;
|
||
```
|
||
|
||
**移除后**:
|
||
```dart
|
||
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 说明
|
||
|
||
---
|
||
|
||
## 📋 命令选项更新
|
||
|
||
### 移除前
|
||
|
||
```bash
|
||
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
|
||
```
|
||
|
||
### 移除后
|
||
|
||
```bash
|
||
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. **手动定义常量**
|
||
```dart
|
||
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` 选项
|
||
|
||
### 测试命令
|
||
|
||
```bash
|
||
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` 文件!
|
||
|