Skip to content

编辑版本信息

1. 接口定位

  • 接口名称: 编辑版本信息
  • 所属域: admin/application
  • 业务目标: 按版本记录 ID 局部更新应用版本信息

2. 请求定义

  • Method: POST
  • Path: /application/update_version
  • Content-Type: 推荐 application/json
  • operationID: 必填,请通过 Header operationID 传入
  • 鉴权: 需要 Header token,且必须是管理员 token
  • 幂等性: 对相同更新内容重复提交可视为幂等

3. 请求参数

Header 参数

字段必填类型说明
operationIDstring链路追踪 ID
tokenstring管理员 token

Body 参数

字段必填类型说明
idstring目标版本记录的 Mongo ObjectID 十六进制字符串
platformobjectwrapper 字段,存在时更新平台
versionobjectwrapper 字段,存在时更新版本号
urlobjectwrapper 字段,存在时更新下载地址
textobjectwrapper 字段,存在时更新版本说明
forceobjectwrapper 字段,存在时更新强制升级标记
latestobjectwrapper 字段,存在时更新最新版本标记
hotobjectwrapper 字段,存在时更新热更标记

wrapper 字段说明

  • StringValue 风格字段使用:{ "value": "new-value" }
  • BoolValue 风格字段使用:{ "value": true }

字段约束

  • 当前协议层没有为本接口定义显式 Check() 校验。
  • RPC 层会强制校验 id 是否可解析为 Mongo ObjectID,否则返回 invalid id ...
  • 当前实现允许请求里不传任何可更新字段;此时更新字典为空,最终不会修改任何内容,但接口仍可能返回成功。

4. 响应结构

通用响应包裹

字段类型说明
errCodeint错误码,0 表示成功
errMsgstring错误简述
errDltstring错误详情
dataobject业务数据

data 字段

  • 本接口成功时返回空对象(无业务字段)。

5. 业务规则

  • 仅管理员可以调用。
  • 服务端按 wrapper 字段是否存在决定哪些字段进入 $set 更新。
  • RPC 不会先查询版本记录是否存在,而是直接按 _id 尝试更新。
  • 若把 platformversion 更新成已存在的组合,仍会触发数据库唯一索引冲突。

6. 错误码与失败场景

错误码场景典型报错
1001id 不是合法 ObjectIDinvalid id ...
-(platform, version) 更新冲突由数据库唯一索引返回错误
-数据库更新失败由数据库层返回原始错误

7. 示例

fetch 请求示例

javascript
fetch("http://localhost:10009/application/update_version", {
  method: "POST",
  headers: {
    operationID: "550e8400-e29b-41d4-a716-446655440702",
    token: "eyJhbGciOi...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    id: "67ea5ef1b9f35d6a63717811",
    text: { value: "security patch release" },
    latest: { value: true },
    hot: { value: false },
  }),
})
  .then((res) => res.json())
  .then((data) => console.log(data));

请求示例(JSON)

json
{
  "id": "67ea5ef1b9f35d6a63717811",
  "text": {
    "value": "security patch release"
  },
  "latest": {
    "value": true
  },
  "hot": {
    "value": false
  }
}

成功响应示例

json
{
  "errCode": 0,
  "errMsg": "",
  "errDlt": "",
  "data": {}
}

失败响应示例

json
{
  "errCode": 1001,
  "errMsg": "ArgsError",
  "errDlt": "invalid id the provided hex string is not a valid ObjectID"
}

8. 时序流程

  1. 中间件校验管理员 token。
  2. 解析 id 为 Mongo ObjectID
  3. 根据 wrapper 字段构造更新字典。
  4. 对匹配 _id 的版本记录执行 $set 更新。
  5. 返回统一成功响应。

9. 变更记录

  • 2026-03-31: 首版发布,基于应用版本局部更新与 ObjectID 解析逻辑补全文档。