swagger_generator_flutter/ENUM_QUICK_REFERENCE.md

123 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 枚举键名生成快速参考
## 三种生成方式
### 🥇 方式 1: Swagger 扩展字段(推荐)
**适用场景**: 后端支持 OpenAPI 扩展
```json
{
"SysTaskTypeEnums": {
"enum": [1, 2, 3],
"type": "integer",
"x-enum-varnames": ["SPOT_CHECK", "CULTURAL", "CLASS_CADRE_MEETING"],
"x-enum-descriptions": ["抽查", "文创建设", "班干部会议"]
}
}
```
### 🥈 方式 2: 配置文件映射(备选)
**适用场景**: 后端不支持扩展字段,或需要覆盖 Swagger 定义
```yaml
# generator_config.yaml
generation:
models:
enum_key_mappings:
SysTaskTypeEnums:
- value: 1
name: SPOT_CHECK
description: 抽查
- value: 2
name: CULTURAL
description: 文创建设
```
### 🥉 方式 3: 智能生成(默认)
**适用场景**: 快速原型,临时使用
```dart
enum SysTaskTypeEnums {
value1(1),
value2(2),
value3(3);
}
```
## 优先级规则
```
配置文件映射 > Swagger 扩展字段 > 智能生成
```
## 生成结果对比
| 方式 | 枚举键名 | 注释 | 维护成本 |
|------|---------|------|---------|
| Swagger 扩展字段 | ✅ 有意义 | ✅ 有 | 🟢 低(后端维护) |
| 配置文件映射 | ✅ 有意义 | ✅ 有 | 🟡 中(前端维护) |
| 智能生成 | ❌ 通用 | ❌ 无 | 🟢 低(无需维护) |
## 快速开始
### Step 1: 选择方式
- 后端支持 → 使用方式 1
- 后端不支持 → 使用方式 2
- 快速原型 → 使用方式 3
### Step 2: 配置(如果使用方式 1 或 2
**方式 1**: 联系后端添加 `x-enum-varnames``x-enum-descriptions`
**方式 2**: 在 `generator_config.yaml` 中添加配置
### Step 3: 生成代码
```bash
dart run swagger_generator_flutter:main generate --all
```
### Step 4: 验证结果
检查生成的枚举文件是否有有意义的键名和注释。
## 常见问题
### Q: 如何覆盖 Swagger 文档中的枚举定义?
A: 在配置文件中添加相同枚举名称的映射,配置文件优先级更高。
### Q: 可以只配置部分枚举值吗?
A: 可以。未配置的枚举值会使用 Swagger 扩展字段或智能生成。
### Q: 如何确保枚举键名符合规范?
A: 使用大写字母和下划线UPPER_SNAKE_CASE避免使用 Dart 关键字。
### Q: 配置文件映射支持哪些类型?
A: 支持整数枚举 (`integer`, `number`) 和字符串枚举 (`string`)。
## 示例文件
- **Swagger 示例**: `example/swagger_enum_example.json`
- **配置文件示例**: `example/enum_config_mapping_example.yaml`
- **完整模板**: `generator_config.template.yaml`
## 详细文档
- 📖 [提案文档](./ENUM_KEY_NAMES_PROPOSAL.md)
- 📚 [使用指南](./ENUM_KEY_NAMES_USAGE.md)
- 📝 [实现总结](./ENUM_CONFIG_MAPPING_SUMMARY.md)
---
**更新日期**: 2025-11-24
**版本**: v2.0