百积木文档
开发指南Bundle 开发模块开发

HTTP methodBody 源契约

使用 snake_case 编写、生成和保存 HTTP 模块方法,并正确处理历史驼峰输入。

HTTP 方法的 methodBody 是项目源码的一部分。所有可修改源码的生产者,包括 Manager、 代码生成器、项目模板、迁移脚本和其他自动化工具,都必须直接写入本页定义的 snake_case 字段。

这个要求只作用于 HTTP methodBodymodule.json 和方法定义外层的 paramDefinitionsreturnTypeerrorTypeMap 等字段仍服从各自现行协议,不能做全文件机械重命名。

规范字段

methodBody 顶层只允许以下字段:

字段必填含义
request_url请求地址或路径
protocol请求协议
http_methodHTTP 方法,如 GETPOST
urlURL 路径参数映射
body请求体参数映射
query查询参数映射
header请求头参数映射
body_format请求体格式
return_format方法返回格式
backend_response_format后端响应模型
error_code_field响应错误码字段
error_message_field响应错误信息字段
data_field响应数据字段
success_expression成功判定表达式
error_code_expression错误码提取表达式
error_message_expression错误信息提取表达式
data_expression数据提取表达式

urlbodyqueryheader 是以公共方法参数名为键的对象。每个映射项可包含 requiredpositionkeydefaultexpression

{
  "request_url": "https://api.example.com/v1/items/{item_id}",
  "protocol": "http",
  "http_method": "POST",
  "url": {
    "item_id": {
      "required": true,
      "position": "url",
      "key": "item_id"
    }
  },
  "body": {
    "name": {
      "required": true,
      "position": "body",
      "key": "name"
    }
  },
  "query": {},
  "header": {},
  "body_format": "json",
  "return_format": "json",
  "backend_response_format": "cmodel",
  "error_code_field": "code",
  "error_message_field": "message",
  "data_field": "data",
  "success_expression": "response.code == 0",
  "error_code_expression": "response.code",
  "error_message_expression": "response.message",
  "data_expression": "response.data"
}

项目服务能够读取对象形式或历史项目中的 JSON 字符串形式;修改时保留当前方法文件的 外层存储形状,但字符串内部也必须使用上述 snake_case 字段。

历史兼容边界

历史 httpMethodbodyFormatreturnFormatbackendResponseFormaterrorCodeFielderrorMessageFielddataField 以及各类 *Expression 驼峰字段,只能 在受控输入边界读取并转换。它们不是新的写入协议,任何生产者都不能继续产生这些字段。

如果同一语义同时出现 snake_case 和历史字段,保存方必须拒绝冲突,不能猜测哪一个正确。 未知顶层字段也会在模块版本冻结时被拒绝,不能静默丢弃。读取旧项目后只要发生保存,就应 输出单一的规范字段集合。

修改检查

提交前至少检查:

  1. 只修改预期的 methods/*.json,没有机械重命名方法定义外层字段。
  2. methodBody 不包含带大写字母的顶层字段,也不同时包含历史别名。
  3. request_url 非空,参数映射键与 paramDefinitions 中的公共参数一致。
  4. 生成器、模板和 UI 保存结果与手写项目文件使用同一规范。
  5. 冻结模块版本后,安装 Artifact 中仍只出现 snake_case 字段。

完成源码修改后,按模块冻结与 Bundle 交付 提交项目 Git、冻结模块版本并纳入 Bundle。

本页内容