上传菜单清单
查看文档来源信息
- 来源目录:
addons/sys_base/docs - 来源文件:
接口文档/28-上传菜单清单.md
详细说明
用于把已经通过校验的菜单清单保存为菜单版本草稿。接口会在落库前重新执行完整菜单清单校验;只要存在 blocking 阻断项,本次上传不会创建或更新版本记录。
本接口适用于 system_menu 和 app_menu 两类菜单清单。前端在选择 JSON 文件后应先调用“校验菜单清单”接口,确认无阻断项后再调用本接口保存草稿。
接口信息
| 项目 | 内容 |
|---|---|
| 请求方式 | POST |
| 请求路径 | /sys_base/platform/manifest/uploadMenuCatalog |
| 来源文件 | 接口文档/28-上传菜单清单.md |
请求头
| 请求头 | 示例值 | 说明 |
|---|---|---|
Content-Type | application/json | 请求体格式。 |
x-token | <登录令牌> | 登录令牌。 |
app-id | mid-admin | 当前应用 ID。 |
addons-type | sys_base | 当前模块标识。 |
入参
| 参数名 | 类型 | 是否必填 | 示例值 | 参数说明 |
|---|---|---|---|---|
targetAddonsType | string | 是 | sys_base | 当前页面选择的目标模块标识,必须与清单 manifest.addonsType 一致。 |
targetCatalogType | string | 是 | system_menu | 当前入口要求的清单类型,固定为 system_menu 或 app_menu。 |
targetAppScope | object | 是 | {"scopeMode":"all_apps"} | 当前页面选择的应用范围,必须与清单 manifest.appScope 一致。 |
fileName | string | 否 | sys_base.system_menu.json | 上传文件名,仅用于版本记录和审计展示。 |
manifest | object | 是 | {...} | 菜单清单正文,根字段必须使用正式字段名。 |
参数说明
请参考上方入参表。
请求示例
json
{
"targetAddonsType": "sys_base",
"targetCatalogType": "system_menu",
"targetAppScope": {
"scopeMode": "all_apps"
},
"fileName": "sys_base.system_menu.json",
"manifest": {
"addonsType": "sys_base",
"catalogType": "system_menu",
"catalogCode": "sys_base.system_menu",
"catalogTitle": "系统菜单清单",
"catalogVersion": "v1.0.0",
"sourceProjectCode": "sys_base.pcweb",
"appScope": {
"scopeMode": "all_apps"
},
"pages": [
{
"pageCode": "system.menu.manage",
"pageTitle": "系统菜单",
"menuFlag": "menu",
"routeName": "menu"
}
],
"actions": [
{
"pageCode": "system.menu.manage",
"actionCode": "menu.publish",
"actionTitle": "系统菜单发布"
}
],
"menuSeeds": [
{
"seedType": "page",
"pageCode": "system.menu.manage",
"title": "系统菜单",
"name": "menu",
"menuFlag": "menu",
"menuType": "menu"
}
],
"defaultPage": {
"pageCode": "system.menu.manage",
"routeName": "menu",
"menuFlag": "menu"
}
}
}响应输出
成功
json
{
"code": 0,
"msg": "菜单版本上传成功",
"data": {
"detail": {
"version": {
"uuid": "MCVxxxx",
"addonsType": "sys_base",
"catalogType": "system_menu",
"catalogCode": "sys_base.system_menu",
"catalogTitle": "系统菜单清单",
"catalogVersion": "v1.0.0",
"sourceProjectCode": "sys_base.pcweb",
"appScopeKey": "scopeMode=all_apps",
"appScope": {
"scopeMode": "all_apps"
},
"versionStatus": "uploaded",
"fileName": "sys_base.system_menu.json",
"validation": {
"summary": {
"blockingCount": 0,
"warningCount": 0,
"infoCount": 0,
"hasBlocking": false
},
"issues": []
}
},
"manifest": {}
}
}
}阻断
json
{
"code": 7,
"msg": "菜单清单上传已阻断:menuSeeds 不能为空",
"data": {
"detail": {
"version": {
"versionStatus": "blocked",
"validation": {
"summary": {
"blockingCount": 1,
"warningCount": 0,
"infoCount": 0,
"hasBlocking": true
},
"issues": [
{
"severity": "blocking",
"field": "menuSeeds",
"ruleCode": "required_menu_seeds",
"message": "menuSeeds 不能为空",
"suggestion": "至少声明一组正式菜单承载节点"
}
]
}
},
"manifest": {}
}
}
}字段说明
| 字段名 | 类型 | 字段说明 |
|---|---|---|
code | number | 0 表示保存草稿成功,7 表示失败。 |
msg | string | 操作结果或阻断原因。 |
data.detail.version.uuid | string | 保存成功后的菜单版本记录号;阻断时为空。 |
data.detail.version.versionStatus | string | 保存成功为 uploaded;阻断响应仅用于展示校验结果,不代表已落库。 |
data.detail.version.validation.summary.blockingCount | number | 阻断项数量。 |
data.detail.version.validation.issues | array | 校验问题明细。 |
data.detail.manifest | object | 后端规范化后的清单内容。 |
curl 示例
bash
curl --location --request POST 'http://127.0.0.1:8100/sys_base/platform/manifest/uploadMenuCatalog' \
--header 'Content-Type: application/json' \
--header 'x-token: <登录令牌>' \
--header 'app-id: mid-admin' \
--header 'addons-type: sys_base' \
--data-raw '{
"targetAddonsType": "sys_base",
"targetCatalogType": "system_menu",
"targetAppScope": {
"scopeMode": "all_apps"
},
"fileName": "sys_base.system_menu.json",
"manifest": {
"addonsType": "sys_base",
"catalogType": "system_menu",
"catalogCode": "sys_base.system_menu",
"catalogTitle": "系统菜单清单",
"catalogVersion": "v1.0.0",
"sourceProjectCode": "sys_base.pcweb",
"appScope": {
"scopeMode": "all_apps"
},
"pages": [
{
"pageCode": "system.menu.manage",
"pageTitle": "系统菜单",
"menuFlag": "menu",
"routeName": "menu"
}
],
"actions": [
{
"pageCode": "system.menu.manage",
"actionCode": "menu.publish",
"actionTitle": "系统菜单发布"
}
],
"menuSeeds": [
{
"seedType": "page",
"pageCode": "system.menu.manage",
"title": "系统菜单",
"name": "menu",
"menuFlag": "menu",
"menuType": "menu"
}
],
"defaultPage": {
"pageCode": "system.menu.manage",
"routeName": "menu",
"menuFlag": "menu"
}
}
}'