11 KiB
11 KiB
接口迁移确认 - 后端回复
📋 概述
根据前端提供的待确认接口列表,后端需要为以下4个接口创建新版本(基于 tableName + dataBase):
- ✅ 同步字段接口 - 需要创建新版本
- ✅ 获取表配置表单接口 - 需要创建新版本
- ✅ 保存表配置表单接口 - 需要创建新版本
- ✅ 表级别数据变更接口 - 需要创建新版本
1. 同步字段接口
当前接口(旧版本)
- 路径:
POST /api/v1/admin/LowCodeTableInfo/synchronization/{tableId} - 方法:
POST - 参数:
tableId(路径参数,Guid格式) - 状态:✅ 仍然可用,但建议迁移到新版本
新版本接口
- 路径:
POST /api/v1/admin/LowCodeTableInfo/synchronizationByTable - 方法:
POST - 参数:请求体(JSON)
{ tableName: string; // 表名(必填) dataBase: string; // 数据库标识(必填) } - 响应:
true(成功) 或抛出异常 - 功能:从数据库同步字段信息到内存缓存(清除缓存并重新加载)
请求示例
{
"tableName": "T_AccountPasswordLogins",
"dataBase": "LiveForum"
}
响应示例
true
说明
- 新版本接口会清除缓存并重新从数据库加载表结构
- 不再依赖数据库表
LowCodeTable的记录 - 直接使用
tableName + dataBase匹配表
2. 获取表配置表单接口
当前接口(旧版本)
- 路径:
GET /api/v1/admin/LowCodeTable/findForm/{id} - 方法:
GET - 参数:
id(路径参数,Guid格式,可选) - 状态:✅ 仍然可用,但建议迁移到新版本
新版本接口
- 路径:
POST /api/v1/admin/LowCodeTable/findFormByTable - 方法:
POST(使用 POST 以便传递复杂参数) - 参数:请求体(JSON)
{ tableName: string; // 表名(必填) dataBase: string; // 数据库标识(必填) } - 响应:字典对象
{ id: string; // 表的临时ID(从内存生成,不固定) form: { // 表配置信息 tableName: string; dataBase: string; displayName: string; entityName: string; remark: string; modelPath: string; servicePath: string; controllerPath: string; clientIndexPath: string; clientInfoPath: string; clientServicePath: string; isCover: boolean; }; menu: string; // 菜单路径(如 "views/apps/T_AccountPasswordLogins/Index.vue") router: string; // 路由路径(如 "/apps/t_accountpasswordlogins") }
请求示例
{
"tableName": "T_AccountPasswordLogins",
"dataBase": "LiveForum"
}
响应示例
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"form": {
"tableName": "T_AccountPasswordLogins",
"dataBase": "LiveForum",
"displayName": "账号密码登录表",
"entityName": "TAccountPasswordLogins",
"remark": "账号密码登录表",
"modelPath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\MiaoYu.Repository.LiveForum.Admin\\Entities\\Apps\\TAccountPasswordLogins",
"servicePath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\MiaoYu.Api.Admin\\ApplicationServices\\Apps\\LiveForum\\TAccountPasswordLogins",
"controllerPath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\MiaoYu.Api.Admin\\Controllers\\Apps\\LiveForum\\TAccountPasswordLogins",
"clientIndexPath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\admin-client\\src\\views\\apps\\liveforum\\T_AccountPasswordLogins",
"clientInfoPath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\admin-client\\src\\views\\apps\\liveforum\\T_AccountPasswordLogins",
"clientServicePath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\admin-client\\src\\services\\apps\\liveforum\\T_AccountPasswordLogins",
"isCover": false
},
"menu": "views/apps/T_AccountPasswordLogins/Index.vue",
"router": "/apps/t_accountpasswordlogins"
}
说明
- 新版本接口从内存缓存获取表信息,不依赖数据库表记录
- 路径信息会根据数据源配置自动填充
id字段是临时生成的,每次查询可能不同
3. 保存表配置表单接口
当前接口(旧版本)
- 路径:
POST /api/v1/admin/LowCodeTable/{id ? "update" : "create"} - 方法:
POST - 参数:
id(用于判断是更新还是创建),formData(表单数据) - 状态:✅ 仍然可用,但建议迁移到新版本
新版本接口
- 路径:
POST /api/v1/admin/LowCodeTable/saveFormByTable - 方法:
POST - 参数:请求体(JSON)
{ tableName: string; // 表名(必填) dataBase: string; // 数据库标识(必填) displayName?: string; // 显示名称 entityName?: string; // 实体名称 remark?: string; // 备注 modelPath?: string; // 实体保存路径 servicePath?: string; // 服务保存路径 controllerPath?: string; // 控制器保存路径 clientIndexPath?: string; // 前端视图保存路径 clientInfoPath?: string; // 前端信息弹窗保存路径 clientServicePath?: string; // 前端服务保存路径 isCover?: boolean; // 是否覆盖生成 } - 响应:
true(成功) 或抛出异常 - 功能:保存表配置到配置文件(JSON文件),不依赖数据库表
请求示例
{
"tableName": "T_AccountPasswordLogins",
"dataBase": "LiveForum",
"displayName": "账号密码登录表",
"entityName": "TAccountPasswordLogins",
"remark": "账号密码登录表",
"modelPath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\MiaoYu.Repository.LiveForum.Admin\\Entities\\Apps\\TAccountPasswordLogins",
"isCover": false
}
响应示例
true
说明
- 新版本接口直接保存到配置文件,不依赖数据库表
LowCodeTable - 使用
tableName + dataBase作为唯一标识 - 如果表不存在,会抛出异常
- 保存后会清除缓存,下次查询会重新加载最新配置
4. 表级别数据变更接口
当前接口(旧版本)
- 路径:
POST /api/v1/admin/LowCodeTable/change - 方法:
POST - 参数:
list(表数据数组,包含id字段) - 状态:✅ 仍然可用,但建议迁移到新版本
新版本接口
- 路径:
POST /api/v1/admin/LowCodeTable/changeByTable - 方法:
POST - 参数:请求体(JSON)
{ tables: Array<{ tableName: string; // 表名(必填) dataBase: string; // 数据库标识(必填) displayName?: string; // 显示名称(可选,null 表示清空) entityName?: string; // 实体名称(可选,null 表示清空) remark?: string; // 备注(可选,null 表示清空) }>; } - 响应:
true(成功) 或抛出异常 - 功能:批量更新表级别的配置(DisplayName, EntityName, Remark),保存到配置文件
请求示例
{
"tables": [
{
"tableName": "T_AccountPasswordLogins",
"dataBase": "LiveForum",
"displayName": "账号密码登录表",
"entityName": "TAccountPasswordLogins",
"remark": "账号密码登录表"
},
{
"tableName": "T_Users",
"dataBase": "LiveForum",
"displayName": "用户表",
"remark": null
}
]
}
响应示例
true
说明
- 新版本接口支持批量更新多个表的配置
- 只更新传递的字段,未传递的字段保持原值
- 字符串字段:
null表示清空,有值表示更新 - 保存到配置文件,不依赖数据库表
- 保存后会清除缓存
📝 迁移建议
迁移优先级
-
高优先级:
findFormByTable- 获取表配置表单(前端经常使用)saveFormByTable- 保存表配置表单(前端经常使用)
-
中优先级:
changeByTable- 表级别数据变更(批量更新场景)
-
低优先级:
synchronizationByTable- 同步字段(较少使用)
迁移步骤
-
前端先迁移高优先级接口
- 测试
findFormByTable和saveFormByTable - 确认功能正常后,再迁移其他接口
- 测试
-
逐步迁移
- 不要一次性迁移所有接口
- 每个接口迁移后都要充分测试
-
保留旧接口
- 旧接口会标记为
[Obsolete],但不会立即删除 - 给前端足够的迁移时间
- 旧接口会标记为
⚠️ 注意事项
-
数据一致性
- 新接口使用配置文件存储,旧接口使用数据库表存储
- 迁移期间,两种存储方式可能不同步
- 建议迁移完成后,统一使用配置文件
-
ID 字段
- 新接口不再依赖数据库表的
id字段 findFormByTable返回的id是临时生成的,不固定- 前端不应该依赖这个
id字段
- 新接口不再依赖数据库表的
-
错误处理
- 所有新接口在参数验证失败或表不存在时会抛出
ArgumentException - 前端需要捕获异常并显示错误信息
- 所有新接口在参数验证失败或表不存在时会抛出
📅 实施计划
阶段一:创建新接口(✅ 已完成)
- ✅ 创建
synchronizationByTable接口 - ✅ 创建
findFormByTable接口 - ✅ 创建
saveFormByTable接口 - ✅ 创建
changeByTable接口
阶段二:标记旧接口为废弃(✅ 已完成)
- ✅ 在所有旧接口上添加
[Obsolete]特性 - ✅ 提供迁移说明
阶段三:前端迁移(进行中)
- 前端逐步迁移到新接口
- 测试验证功能正常
阶段四:清理(未来)
- 确认所有前端都已迁移
- 删除旧接口(可选)
✅ 实施状态
所有新接口已创建完成,可以开始前端迁移!
已创建的新接口
- ✅
POST /api/v1/admin/LowCodeTableInfo/synchronizationByTable- 同步字段 - ✅
POST /api/v1/admin/LowCodeTable/findFormByTable- 获取表配置表单 - ✅
POST /api/v1/admin/LowCodeTable/saveFormByTable- 保存表配置表单 - ✅
POST /api/v1/admin/LowCodeTable/changeByTable- 表级别数据变更
已标记为废弃的旧接口
- ✅
POST /api/v1/admin/LowCodeTableInfo/synchronization/{tableId}- 已标记[Obsolete] - ✅
GET /api/v1/admin/LowCodeTable/findForm/{id}- 已标记[Obsolete] - ✅
POST /api/v1/admin/LowCodeTable/create和update- 已标记[Obsolete] - ✅
POST /api/v1/admin/LowCodeTable/change- 已标记[Obsolete]
📞 联系方式
如有问题,请联系后端开发团队。
📅 文档日期
创建日期:2024年(当前日期)