Tz2/Assets/Zion/Scripts/ERP/Interfaces/API配置系统使用说明.md

254 lines
7.0 KiB
Markdown
Raw 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.

# API配置系统使用说明
## 概述
API配置系统是一个完全基于JSON配置文件的API接口管理系统支持多环境配置、动态参数替换、热重载等功能。
## 系统特点
-**完全配置化**所有API接口配置都存储在JSON文件中
-**多环境支持**:支持开发、测试、生产环境切换
-**动态参数**:支持运行时参数替换
-**热重载**:支持配置文件热重载
-**向后兼容**保持原有API调用方式不变
-**配置验证**:提供完整的配置验证功能
## 配置文件结构
### 配置文件位置
```
Assets/StreamingAssets/DataConfig/api_config.json
```
### 配置文件格式
```json
{
"Version": "1.0.0",
"Description": "API接口配置文件",
"CurrentEnvironment": "开发环境",
"Environments": [
{
"Environment": "开发环境",
"BaseUrl": "http://172.16.1.127:8080",
"DefaultTimeout": 30,
"DefaultRetryCount": 3,
"IsEnabled": true,
"Description": "开发环境配置"
}
],
"Endpoints": [
{
"Name": "GetProSimulationExaminationQueryById",
"Description": "获取任务书和流程",
"UrlTemplate": "{BaseUrl}/member/proSimulationExamination/queryById?id={PaperId}",
"Method": "GET",
"RequireAuth": true,
"Timeout": 30,
"RetryCount": 3,
"IsEnabled": true,
"Parameters": []
}
],
"GlobalParameters": [
{
"Name": "DefaultTimeout",
"Value": "30",
"Description": "默认超时时间(秒)",
"IsRequired": false
}
]
}
```
## 使用方法
### 1. 初始化配置管理器
在游戏启动时初始化API配置管理器
```csharp
// 在GameLauncher.cs中添加
MotionEngine.CreateModule<ApiConfigManager>();
// 初始化配置管理器
var apiConfigManager = MotionEngine.GetModule<ApiConfigManager>();
apiConfigManager.Initialize(enableHotReload: true, hotReloadInterval: 30f);
```
### 2. 使用API接口
#### 方式一:使用原有方式(推荐)
```csharp
// 获取API URL
string url = ApiUrls.TransitInventory.GetProSimulationExaminationQueryById;
// 发送请求
string response = await MotionEngine.GetModule<WebRequestManager>().GetTextAsync(url, token);
```
#### 方式二:使用配置管理器
```csharp
// 获取API URL
var configManager = MotionEngine.GetModule<ApiConfigManager>();
string url = configManager.GetApiUrl("GetProSimulationExaminationQueryById");
// 带动态参数
var dynamicParams = new Dictionary<string, string>
{
["CustomParam"] = "value"
};
string urlWithParams = configManager.GetApiUrl("GetProSimulationExaminationQueryById", dynamicParams);
```
### 3. 切换环境
```csharp
var configManager = MotionEngine.GetModule<ApiConfigManager>();
configManager.SwitchEnvironment(ApiEnvironment.测试环境);
```
## 配置编辑器
### 打开编辑器
在Unity菜单栏选择`工具 -> API配置编辑器`
### 编辑器功能
- 📝 **环境配置**配置不同环境的基础URL和参数
- 🔧 **API接口配置**配置各个API接口的详细信息
- ⚙️ **全局参数**:配置全局参数
-**配置验证**:验证配置的完整性和正确性
- 💾 **保存配置**将配置保存到JSON文件
## 配置说明
### 环境配置
- **Environment**:环境名称(开发环境/测试环境/生产环境)
- **BaseUrl**基础URL地址
- **DefaultTimeout**:默认超时时间(秒)
- **DefaultRetryCount**:默认重试次数
- **IsEnabled**:是否启用该环境
- **Description**:环境描述
### API接口配置
- **Name**:接口名称(必须唯一)
- **Description**:接口描述
- **UrlTemplate**URL模板支持占位符
- **Method**HTTP方法GET/POST/PUT/DELETE等
- **RequireAuth**:是否需要认证
- **Timeout**:超时时间(秒)
- **RetryCount**:重试次数
- **IsEnabled**:是否启用该接口
- **Parameters**:接口特定参数
### URL模板占位符
- `{BaseUrl}`基础URL
- `{PaperId}`试卷ID自动从GlobalDataStorage获取
- `{ExamRoomId}`考场ID自动从GlobalDataStorage获取
- `{IpAddress}`IP地址自动从GlobalDataStorage获取
- `{CustomParam}`自定义参数通过dynamicParams传入
### 全局参数
- **Name**:参数名称
- **Value**:参数值
- **Description**:参数描述
- **IsRequired**:是否必需
## 配置验证
系统会自动验证配置的完整性:
### 验证项目
- ✅ 配置文件格式正确性
- ✅ 环境配置完整性
- ✅ API接口配置完整性
- ✅ 参数配置正确性
- ✅ URL模板格式正确性
- ✅ 重复配置检查
### 验证结果
- 🟢 **验证通过**:配置正确,可以正常使用
- 🟡 **警告**:配置有潜在问题,但不影响使用
- 🔴 **错误**:配置有严重问题,需要修复
## 热重载功能
### 启用热重载
```csharp
apiConfigManager.Initialize(enableHotReload: true, hotReloadInterval: 30f);
```
### 热重载机制
- 系统会定期检查配置文件是否被修改
- 检测到修改后自动重新加载配置
- 支持运行时动态修改配置
### 注意事项
- 热重载仅在开发环境建议使用
- 生产环境建议关闭热重载以提高性能
## 错误处理
### 常见错误
1. **配置文件不存在**
- 错误:`API配置文件不存在xxx/api_config.json`
- 解决:确保配置文件存在于正确位置
2. **配置验证失败**
- 错误:`API配置验证失败`
- 解决:使用配置编辑器验证并修复配置
3. **接口未找到**
- 错误:`未找到API接口配置xxx`
- 解决:检查接口名称是否正确,或添加缺失的接口配置
### 备用方案
当配置系统出现问题时,系统会自动使用原有的硬编码方式作为备用方案,确保系统正常运行。
## 最佳实践
### 1. 配置文件管理
- 将配置文件纳入版本控制
- 为不同环境创建不同的配置文件
- 定期备份配置文件
### 2. 接口命名规范
- 使用有意义的接口名称
- 保持命名一致性
- 避免使用特殊字符
### 3. 环境管理
- 开发环境:用于本地开发测试
- 测试环境:用于集成测试
- 生产环境:用于正式部署
### 4. 安全考虑
- 生产环境的敏感信息不要硬编码
- 使用环境变量或加密配置
- 定期更新认证信息
## 迁移指南
### 从硬编码迁移到配置化
1. **备份现有代码**
2. **创建配置文件**:使用配置编辑器创建初始配置
3. **逐步迁移**:逐个接口迁移到配置系统
4. **测试验证**:确保所有接口正常工作
5. **清理代码**移除硬编码的URL
### 兼容性说明
- 原有的API调用方式完全兼容
- 无需修改现有业务代码
- 可以逐步迁移,无需一次性完成
## 技术支持
如果遇到问题,请检查:
1. 配置文件格式是否正确
2. 配置文件路径是否正确
3. 配置验证是否通过
4. 日志输出中的错误信息
---
**注意**本系统完全依赖JSON配置文件不再支持硬编码的默认配置。请确保配置文件存在且格式正确。