Skip to content

校验菜单清单

POST/sys_base/platform/manifest/validateMenuCatalog
构建时间2026-06-26 20:10:33(Asia/Shanghai)来源项目中间件文档 / 中间件后端来源仓../cl-midserver-2026来源提交号69b951a07311e75887b57e0400d888f89dd72cac
查看文档来源信息
  • 来源目录:addons/sys_base/docs
  • 来源文件:接口文档/83-校验菜单清单.md

详细说明

用于在保存草稿前校验菜单清单正文。接口只执行解析后的正式规则校验和目标范围校验,不创建、不更新菜单版本记录。

当前接口即使发现 blocking 阻断项,也会返回 code=0,并通过 data.result.validation 给出阻断项明细。调用方应根据 validation.summary.hasBlockingblockingCount 判断是否允许继续调用上传接口。

接口信息

项目内容
请求方式POST
请求路径/sys_base/platform/manifest/validateMenuCatalog
来源文件接口文档/83-校验菜单清单.md

请求头

请求头示例值说明
Content-Typeapplication/json请求体格式。
x-token<登录令牌>登录令牌。
app-idmid-admin当前应用 ID。
addons-typesys_base当前模块标识。

入参

参数名类型是否必填示例值参数说明
targetAddonsTypestringsys_base当前页面选择的目标模块标识,必须与清单 manifest.addonsType 一致。
targetCatalogTypestringsystem_menu当前入口要求的清单类型,固定为 system_menuapp_menu
targetAppScopeobject{"scopeMode":"all_apps"}当前页面选择的应用范围,必须与清单 manifest.appScope 一致。
fileNamestringsys_base.system_menu.json待校验文件名,仅用于调用方追踪,不参与校验结果落库。
manifestobject{...}待校验菜单清单正文。

参数说明

请参考上方入参表。

请求示例

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": [],
    "actions": [],
    "menuSeeds": [],
    "defaultPage": null
  }
}

响应输出

json
{
  "code": 0,
  "msg": "菜单清单校验完成",
  "data": {
    "result": {
      "manifest": {
        "addonsType": "sys_base",
        "catalogType": "system_menu"
      },
      "appScope": {
        "scopeMode": "all_apps"
      },
      "appScopeKey": "scopeMode=all_apps",
      "validation": {
        "summary": {
          "blockingCount": 3,
          "warningCount": 0,
          "infoCount": 0,
          "hasBlocking": true
        },
        "issues": [
          {
            "severity": "blocking",
            "field": "pages",
            "ruleCode": "required_pages",
            "message": "pages 不能为空",
            "suggestion": "至少声明一个正式页面"
          }
        ]
      }
    }
  }
}

字段说明

字段名类型字段说明
codenumber调用成功为 0。校验未通过不改变 code,以 validation 表达。
msgstring接口调用结果。
data.result.manifestobject后端规范化后的菜单清单正文。
data.result.appScopeobject规范化后的应用范围。
data.result.appScopeKeystring应用范围隔离键。
data.result.validation.summary.blockingCountnumber阻断项数量。大于 0 时不得保存草稿。
data.result.validation.summary.warningCountnumber提醒项数量。
data.result.validation.summary.hasBlockingboolean是否存在阻断项。
data.result.validation.issues[].severitystring问题等级,取值为 blockingwarninginfo
data.result.validation.issues[].fieldstring问题字段路径。
data.result.validation.issues[].ruleCodestring校验规则编码。
data.result.validation.issues[].messagestring问题描述。
data.result.validation.issues[].suggestionstring修复建议。

curl 示例

bash
curl --location --request POST 'http://127.0.0.1:8100/sys_base/platform/manifest/validateMenuCatalog' \
--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": [],
    "actions": [],
    "menuSeeds": [],
    "defaultPage": null
  }
}'

CL 正式文档平台